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 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告
© . All rights reserved.