Nhiệm vụ được giao là tính số chấm tối đa có thể có sau khi ném một con xúc xắc N lần có M mặt.
Mặt đầu tiên của con xúc xắc có 1 chấm, mặt thứ hai có 2 chấm, v.v. Tương tự như vậy, mặt thứ M chứa M số chấm.
Xác suất xuất hiện của mỗi mặt trở thành 1 / M.
Bây giờ chúng ta hãy hiểu những gì chúng ta phải làm bằng cách sử dụng một ví dụ -
Đầu vào - M =2, N =3
Đầu ra - 1,875
Giải thích - Xúc xắc có 2 mặt ={1, 2}
Nếu xúc xắc được ném 3 lần thì không gian mẫu sẽ là =M N =2 3
{(1, 1, 1), (1, 1, 2), (1, 2, 1), (1, 2, 2,) (2, 1, 1), (2, 1, 2), (2, 2, 1), (2, 2, 2,)} Maximum number in (1, 1, 1) = 1 Maximum number in (1, 1, 2) = 2 Maximum number in (1, 2, 1) = 2 Maximum number in (1, 2, 2) = 2 Maximum number in (2, 1, 1) = 2 Maximum number in (2, 1, 2) = 2 Maximum number in (2, 2, 1) = 2 Maximum number in (2, 2, 2) = 2 Probability of each case = 1/23 = 0.125 Therefore, expectation of maximum number = (1+2+2+2+2+2+2+2) * (0.125) = 1.875
Đầu vào - M =2, N =2
Đầu ra - 1,75
Phương pháp tiếp cận được sử dụng trong chương trình dưới đây như sau
-
Có thể tìm thấy số trường hợp tối đa trong đó một số có thể xảy ra bằng cách sử dụng số trước của nó bằng cách sử dụng công thức - i N - (i-1) N .
Ví dụ:nếu M =4 và N =2, tổng số trường hợp trong đó tối đa =4 sẽ là 4 2 - (4-1) 2 =7.
Vì vậy, câu trả lời cuối cùng sẽ là áp dụng công thức này trên mọi phần tử từ 1 đến M -
(i * (i N - (i - 1) N )) / M N và thêm chúng lên.
-
Trong hàm MaxExpect (), hãy khởi tạo một biến max =0 kiểu double để lưu trữ tổng.
-
Sau đó lặp lại từ i =M đến i> 0
-
Bên trong vòng lặp, hãy áp dụng công thức đã nêu ở trên và tiếp tục thêm tất cả các giá trị kết quả vào biến max.
Ví dụ
#include <bits/stdc++.h> using namespace std; double MaxExpect(double M, double N){ double max = 0.0, i; for (i = M; i; i--) /*formula to find maximum number and sum of maximum numbers*/ max += (pow(i / M, N) - pow((i - 1) / M, N)) * i; return max; } int main(){ double M = 2, N = 3; cout << MaxExpect(M, N); return 0; }
Đầu ra
Nếu chúng ta chạy đoạn mã trên, chúng ta sẽ nhận được kết quả sau -
1.875