Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ความน่าจะเป็นที่ชิ้นส่วนของแท่งไม้หักเป็นรูปหลายเหลี่ยมด้าน n ใน C++


เราได้รับแท่งไม้ที่มีความยาวเท่าใดก็ได้ และแท่งนั้นสามารถแบ่งสุ่มเป็น 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