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