ความน่าจะเป็นคือโอกาสในการได้ผลลัพธ์ที่ต้องการจากชุดข้อมูลที่มีอยู่ ช่วงของความน่าจะเป็นอยู่ระหว่าง 0 ถึง 1 โดยที่จำนวนเต็ม 0 แสดงถึงโอกาสที่เป็นไปไม่ได้ และ 1 แสดงถึงความแน่นอน
ความน่าจะเป็นคืออะไร
ความน่าจะเป็นในวิชาคณิตศาสตร์ทำให้เรามีเครื่องมือที่บอกความไม่แน่นอนของเหตุการณ์และเหตุผล กล่าวอีกนัยหนึ่ง เราสามารถพูดได้ว่าความน่าจะเป็นเกี่ยวข้องกับการคำนวณความน่าจะเป็นของเหตุการณ์ที่กำหนด ซึ่งสามารถแสดงเป็นตัวเลขระหว่าง 1 ถึง 0 ตัวอย่างเช่น ความน่าจะเป็นที่จะได้หัวเมื่อโยนเหรียญที่ไม่เอนเอียงหรือได้ 3 เมื่อทอยลูกเต๋า
ทีนี้ กลับมาที่คำถาม เราต้องหาความน่าจะเป็นที่จะได้หัวอย่างน้อย k ในการโยนเหรียญ N
เช่นเดียวกับที่เรามี 3 เหรียญและ k เป็น 2 ดังนั้นมี 23=8 วิธีในการโยนเหรียญที่เป็น -
HHH, HTH, HHT, HTT, THH, THT, TTT, TTH
และชุดที่มีอย่างน้อย 2 หัวคือ −
HHH, HTH, HHT, THH.
ดังนั้นความน่าจะเป็นจะเป็น 4/8 หรือ 0.5
ตัวอย่าง
Input: k = 1, n = 3 Output: 0.875 Input: k = 3, n = 6 Output: 0.65625
แนวทางที่เราจะติดตามเพื่อแก้ปัญหาข้างต้น -
- เราจะรับ n และ k เป็นข้อมูลเข้า
- เก็บค่าของแฟคทอเรียลในอาร์เรย์และเรียกใช้เมื่อใดก็ได้ที่จำเป็น
- ทำการคำนวณ
- ส่งคืนผลลัพธ์
อัลกอริทึม
Step 1-> declare function to calculate the probability of getting at least k heads in n tosses double probability(int k, int n) Declare and set double check = 0 Loop For i = k and i <= n and ++i Set check += temp[n] / (temp[i] * temp[n - i]) End Call check = check / (1LL << n) return check Step 2-> declare function to precompute the value void precompute() Set temp[0] = temp[1] = 1 Loop For i = 2 and i < 20 and ++i Set temp[i] = temp[i - 1] * i Step 3-> In main Call precompute() Call probability(1, 3) Stop
ตัวอย่าง
#include<bits/stdc++.h> using namespace std; #define size 21 double temp[size]; // calculate probability of getting at least k heads in n tosses. double probability(int k, int n) { double check = 0; for (int i = k; i <= n; ++i) check += temp[n] / (temp[i] * temp[n - i]); check = check / (1LL << n); return check; } void precompute() { temp[0] = temp[1] = 1; for (int i = 2; i < 20; ++i) temp[i] = temp[i - 1] * i; } int main() { precompute(); // Probability of getting 1 head out of 3 coins cout<<"probability is : "<<probability(1, 3) << "\n"; // Probability of getting 3 head out of 6 coins cout<<"probability is : "<<probability(3, 6) <<"\n"; return 0; }
ผลลัพธ์
probability is : 0.875 probability is : 0.65625