C ++中折断的碎片形成侧多边形的可能性

我们可以得到任意长度的棒,并且可以将棒随机破碎为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;
//计算概率的函数
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