Cho tổng và số lần tung cặp xúc xắc làm đầu vào, nhiệm vụ là xác định xác suất nhận được tổng cho trước khi tung cặp xúc xắc N lần.
Xác suất là cơ hội đạt kết quả mong muốn từ tập dữ liệu có sẵn. Phạm vi xác suất nằm giữa 0 và 1, trong đó số nguyên 0 thể hiện khả năng không thể xảy ra và 1 chỉ sự chắc chắn.
Ví dụ
Đầu vào: sum = 12, N = 1 Đầu ra: Xác suất = 1/36 Giải thích: nếu tung cặp xúc xắc một lần thì các tổ hợp sẽ là (1,1), (1,2), (1,3), (1,4), (1,5), (1,6), (2,1), (2,2), (2,3), (2,4), (2,5), (2,6), (3,1), (3,2), (3,3), (3,4), (3,5), (3,6), (4,1), (4,2), (4,3), (4,4), (4,5), (4,6), (5,1), (5,2), (5,3), (5,4), (5,5), (5,6), (6,1), (6,2), (6,3), (6,4), (6,5), (6,6). Trong các tổ hợp này ta có tổng 12 chỉ ở cặp (6,6) nên xác suất là 1/36. Đầu vào: sum = 4 và N = 6 Đầu ra: xác suất là: 1/2985984
Cách tiếp cận dùng trong chương trình dưới đây –
- Nhập giá trị sum và N chỉ số lần tung xúc xắc
- Để tính xác suất xuất hiện sum khi tung 2 xúc xắc N lần áp dụng công thức: (lợi ích/tổng) ^ N
- Tính xác suất xuất hiện tổng đó khi tung 2 xúc xắc 1 lần, giả sử là 1
- Để tính xác suất xuất hiện tổng đó khi tung 2 xúc xắc N lần sẽ là –
- Xác suất2 = (Xác suất 1) ^ N. Tức là Xác suất1 mũ N
Thuật toán
Bắt đầu
Bước 1 -> Khai báo hàm tính xác suất
int probability(int sum, int times)
Khai báo và gán float res = 0.0 và total = 36.0
Khai báo và gán long int probab = 0
Vòng lặp Với i = 1 đến i <= 6 và i++
Vòng lặp Với j = 1 đến j <= 6 và j++
NẾU ((i + j) = sum)
Gán res++
Kết thúc
Kết thúc
Kết thúc
Khai báo và gán int gcd1 = __gcd((int)res, (int)total)
Gán res = res / (float)gcd1
Gán total = total / (float)gcd1
Gán probab = pow(total, times)
trả về probab
Bước 2 -> Trong main()
Khai báo và gán int sum = 4 và times = 6
Gọi probability(sum, times)
Kết thúc
Ví dụ mã C++
#include <bits/stdc++.h>
using namespace std;
// Hàm tính xác suất nhận tổng khi tung 2 xúc xắc N lầ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 << "xác suất là: ";
cout << "1" << "/" << probability(sum, times);
return 0;
}
Đầu ra
xác suất là: 1/2985984