C++ 中 N 個容器中最大化一種型別的機率
機率 Pi=(有利結果數)/(總結果數)。
給定一個數字 N,表示存在的容器數量。我們有兩個數字 X 和 Y 的 N 個副本。任務是將其中一個數字 X 的副本分配到 N 個容器中,使得抽取到 X 的副本的機率最大化。從上面可以看出,為了最大化 Pi,我們可以最大化分子(有利結果數)或最小化分母(總結果數)。這可以透過以下方式實現:只有一個容器包含 Y 的副本,所有容器都包含 X 的副本。N-1 個容器各包含一個 X 的副本(N-1 個 X 的副本)。一個容器包含一個 Y 的副本和 N 個 Y 的副本。
從前 (n-1) 個容器中抽取到 X 的副本的機率 = Pn-1= 1
從最後一個容器中抽取到 X 的副本的機率 = Pn = 1/(n+1)
Pm = Pn-1 * (n – 1) + Pn ∴ Pm = n / (n + 1)
輸入− N=1
輸出− N=1 的最大機率為 0.5
解釋− 因為只有一個容器,並且其中各包含一個 X 和 Y 的副本。抽取到 X 的最大機率為 0.5。
輸入− N=3
輸出− N=1 的最大機率為 0.75
解釋− 這裡所有容器都包含一個 X 的副本,最後一個容器包含所有 3 個 Y 的副本。
下面程式中使用的演算法如下
輸入 N 的整數值,表示容器的數量。
宣告一個變數來儲存 X 的最大機率,例如 maxP。
對於給定的 N,計算 maxP 為 N/(N+1)。
示例
#include <bits/stdc++.h>
using namespace std;
int main(){
int N=3;
double maxP = (double)N / (N + 1);
cout << "Maximum Probability for N = " << N << " is, " <<maxP << endl;
return 0;
}輸出
如果我們執行以上程式碼,它將生成以下輸出:
Maximum Probability for N = 3 is, 0.75
廣告
資料結構
網路
關係型資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP