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

ความน่าจะเป็นของการได้ผลรวมจากการทอยลูกเต๋า 2 ลูก N ครั้งใน C++

โจทย์

เราได้รับผลรวมและจำนวนครั้งที่ทอยคู่ลูกเต๋าเป็นอินพุต งานคือกำหนดความน่าจะเป็นของการได้ผลรวมที่กำหนดเมื่อทอยคู่ลูกเต๋า N ครั้ง

ความน่าจะเป็นคือโอกาสในการได้ผลลัพธ์ที่ต้องการจากชุดข้อมูลที่มีอยู่ ช่วงของความน่าจะเป็นอยู่ระหว่าง 0 ถึง 1 โดยจำนวนเต็ม 0 แสดงความเป็นไปไม่ได้ และ 1 แสดงความแน่นอน

ตัวอย่าง

Input-: sum = 12, N = 1 Output-: Probability = 1/36 Explanation-: ถ้าทอยคู่ลูกเต๋า 1 ครั้ง คอมบิเนชันจะเป็น (1,1), (1,2), ... (6,6) จากคอมบิเนชันเหล่านี้ เราสามารถได้ผลรวม 12 ที่คู่ (6,6) เท่านั้น ดังนั้นความน่าจะเป็นคือ 1/36
Input-: sum = 4 and N = 6 Output-: probability is : 1/2985984

แนวทางที่ใช้ในโปรแกรมด้านล่าง

  • รับค่าผลรวมและ N ซึ่งบ่งชี้จำนวนครั้งที่ทอยลูกเต๋า
  • สำหรับการคำนวณความน่าจะเป็นของการเกิดผลรวมเมื่อทอยลูกเต๋า 2 ลูก N ครั้ง ใช้สูตร: (favorable/total) ^ N
  • คำนวณความน่าจะเป็นของการเกิดผลรวมนั้นเมื่อทอยลูกเต๋า 2 ลูก 1 ครั้ง ซึ่งจะเป็นค่าใดค่าหนึ่ง
  • สำหรับการคำนวณความน่าจะเป็นของการเกิดผลรวมนั้นเมื่อทอยลูกเต๋า 2 ลูก N ครั้ง จะเป็น -
  • Probability2 = (Probability 1) ^ N นั่นคือ Probability1 ยกกำลัง N

อัลกอริทึม

เริ่ม
ขั้นตอน 1 → ประกาศฟังก์ชันคำนวณความน่าจะเป็น
  int probability(int sum, int times)
  ประกาศและตั้งค่า float res = 0.0 และ total = 36.0
  ประกาศและตั้งค่า long int probab = 0
  วนลูป For i = 1 ถึง 6 และ i++
    วนลูป For j = 1 ถึง 6 และ j++
      ถ้า ((i + j) == sum)
        ตั้งค่า res++
      จบถ้า
    จบวน
  จบวน
  ประกาศและตั้งค่า int gcd1 = __gcd((int)res, (int)total)
  ตั้งค่า res = res / (float)gcd1
  ตั้งค่า total = total / (float)gcd1
  ตั้งค่า probab = pow(total, times)
  คืนค่า probab
ขั้นตอน 2 → ใน main()
  ประกาศและตั้งค่า int sum = 4 และ times = 6
  เรียก probability(sum, times)
หยุด

ตัวอย่างโค้ด C++

#include <bits/stdc++.h>
using namespace std;
// ฟังก์ชันคำนวณความน่าจะเป็นของการได้ผลรวมเมื่อทอยลูกเต๋า 2 ลูก N ครั้ง
int probability(int sum, int times) {
  float res = 0.0, total = 36.0;
  long int probab = 0;
  for (int i = 1; i <= 6; i++) {
    for (int j = 1; j <= 6; j++) {
      if ((i + j) == sum)
        res++;
    }
  }
  int gcd1 = __gcd((int)res, (int)total);
  res = res / (float)gcd1;
  total = total / (float)gcd1;
  probab = pow(total, times);
  return probab;
}
int main() {
  int sum = 4, times = 6;
  cout<<"probability is : ";
  cout << "1" << "/" << probability(sum, times);
  return 0;
}

ผลลัพธ์

probability is : 1/2985984