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

更新于:2020-08-13

110 次浏览

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告