โจทย์
เราได้รับผลรวมและจำนวนครั้งที่ทอยคู่ลูกเต๋าเป็นอินพุต งานคือกำหนดความน่าจะเป็นของการได้ผลรวมที่กำหนดเมื่อทอยคู่ลูกเต๋า 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