在C ++中最大化N种容器中一种类型的概率

概率Pi =(有利结果数)/(结果总数)。

给定的数字N是存在的容器数。而且,我们有N个副本,分别包含两个数字X和Y。任务是将一个数字X的副本划分为N个容器,以使绘制X副本的概率最大。从上面可以看出,要最大化Pi,我们可以最大化分子(有利结果的数量)或最小化分母(结果总数)。可以通过以下方式完成此操作:仅一个容器具有Y的副本,所有容器具有X的副本。N-1容器各自具有X的副本(N-1X副本)。一个容器有1Y副本和N个Y副本。

概率(第一个(n-1)个容器的X副本)= P n-1 = 1

概率(来自最后一个容器的X的副本)= P n = 1 /(n + 1)

Pm = Pn-1 * (n – 1) + Pn
∴ Pm = n / (n + 1)

输入-N = 1

输出-N = 1的最大概率为0.5

说明-因为只有1容器,并且每个容器中都有X和Y的1副本。绘制X的最大概率为0.5。

输入-N = 3

输出-N = 1的最大概率为0.75

说明-这里所有容器都有1X副本,最后一个容器具有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
猜你喜欢