C++ 中断棍形成 n 边形的多边形的概率
我们得到一根任意长度的棍子,并且该棍子可以随机断成 n 段,这些段可以是整数类型或浮点数类型,任务是找出这些断开的片段是否可以形成一个 n 边形。
我们可以通过应用公式来计算概率
$$P(E^{\prime})=1-P(E)=1-\frac{n}{2^{n-1}}$$
其中,n 是将棍子分成几部分后产生的片段数。
输入
length = 10 , pieces = 4
输出
probability is : 0.5
解释 - 给定长度为 10 厘米,并将其分成 4 部分
输入
length = 5 , pieces = 3
输出
probability is : 0.25
解释 - 给定长度为 5 厘米,并将其分成 3 部分
下面程序中使用的方案如下
输入棍子的长度以及它可以断成的片段数
应用公式计算概率
打印结果
算法
Start Step 1→ Declare function to calculate the probability double probab(unsigned len, unsigned pieces) declare unsigned a = (1 << (pieces-1)) return 1.0 - ((double)pieces) / ((double)a) step 2→ In main() Declare unsigned pieces = 4, len = 10 Call probab(len, pieces) Stop
示例
#include<iostream> using namespace std; //function to calculate probability double probab(unsigned len, unsigned pieces){ unsigned a = (1 < (pieces-1)); return 1.0 - ((double)pieces) / ((double)a); } int main(){ unsigned pieces = 4, len = 10; cout <<"probability is : "<<probab(len, pieces); return 0; }
输出
如果运行以上代码,它将生成以下输出:
probability is : 0.5
广告