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

更新於: 2020-08-14

102 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告
© . All rights reserved.