Xác suất là cơ hội nhận được đầu ra mong muốn từ tập dữ liệu có sẵn. Phạm vi xác suất nằm trong khoảng từ 0 đến 1 trong đó số nguyên 0 cho thấy khả năng không thể xảy ra và 1 cho thấy sự chắc chắn.
Xác suất là gì?
Xác suất trong toán học cung cấp cho chúng ta những công cụ cho biết sự không chắc chắn của các sự kiện và lý do. Nói cách khác, chúng ta có thể nói xác suất đề cập đến việc tính toán khả năng xảy ra một sự kiện nhất định, có thể được biểu thị bằng một số từ 1 đến 0. Ví dụ:xác suất nhận được đầu khi tung đồng xu không thiên vị hoặc nhận được 3 khi một con xúc xắc được tung.
Bây giờ, quay lại câu hỏi, chúng ta phải tìm xác suất để có ít nhất k đầu trong N lần tung đồng xu.
Giống như chúng ta có 3 đồng xu và k là 2, vậy có 23 =8 cách tung đồng xu -
HHH, HTH, HHT, HTT, THH, THT, TTT, TTH.
Và các bộ chứa ít nhất 2 đầu là -
HHH, HTH, HHT, THH.
Vì vậy, xác suất sẽ là 4/8 hoặc 0,5.
Ví dụ
Input: k = 1, n = 3 Output: 0.875 Input: k = 3, n = 6 Output: 0.65625
Phương pháp tiếp cận mà chúng tôi sẽ theo dõi để giải quyết vấn đề trên -
- Chúng tôi sẽ lấy n và k làm đầu vào.
- Lưu trữ giá trị của giai thừa trong một mảng và gọi nó bất cứ khi nào nó được yêu cầu.
- Thực hiện phép tính.
- Trả lại kết quả.
Thuật toán
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
Ví dụ
#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; }
Đầu ra
probability is : 0.875 probability is : 0.65625