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 次浏览

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告