Computer >> Máy Tính >  >> Lập trình >> C ++

Xác suất để các mảnh của một thanh bị gãy tạo thành một đa giác n cạnh trong C ++


Chúng ta được đưa cho một cây gậy có độ dài bất kỳ và cây gậy đó có thể được bẻ ngẫu nhiên thành n mảnh có thể thuộc kiểu số nguyên hoặc dấu phẩy động và nhiệm vụ là tìm xem các mảnh vỡ có thể tạo thành một đa giác n cạnh.

Chúng ta có thể tính toán xác suất bằng cách áp dụng công thức

$$ P (E ^ {\ prime}) =1-P (E) =1- \ frac {n} {2 ^ {n-1}} $$

Trong đó, n là số mảnh được tạo ra khi bẻ thanh gậy thành nhiều phần.

Đầu vào

length = 10 , pieces = 4

Đầu ra

probability is : 0.5

Giải thích - được cung cấp với chiều dài kích thước 10 cm và nó được chia thành 4 phần

Đầu vào

length = 5 , pieces = 3

Đầu ra

probability is : 0.25

Giải thích - được cung cấp với kích thước dài 5 cm và nó được chia thành 3 phần

Phương pháp tiếp cận được sử dụng trong chương trình dưới đây như sau

  • Nhập chiều dài của thanh với số lượng mảnh mà nó có thể bẻ thành

  • Áp dụng công thức để tính xác suất

  • In kết quả

Thuật toán

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

Ví dụ

#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;
}

Đầu ra

Nếu chạy đoạn mã trên, nó sẽ tạo ra kết quả sau -

probability is : 0.5