ภาพรวมปัญหา
คำนวณค่าคาดหมาย (Expected Value) ของจำนวนจุดสูงสุด ที่ได้จากการทอยลูกเต๋า M หน้า N ครั้ง
ตัวอย่าง
Input: M = 2, N = 3
Output: 1.875
Explanation: ลูกเต๋า 2 หน้า {1,2}, ทอย 3 ครั้ง มี 8 กรณี
ค่าสูงสุดของแต่ละกรณี: 1,2,2,2,2,2,2,2
ค่าคาดหมาย = (1+2×7) × 1/8 = 1.875
สูตรคณิตศาสตร์
ความน่าจะเป็นที่ค่าสูงสุด = i คือ (i^N - (i-1)^N) / M^N
ค่าคาดหมาย = Σ[i=1 to M] i × (i^N - (i-1)^N) / M^N
ตัวอย่างโค้ด C++
#include <bits/stdc.hpp>
using namespace std;
double MaxExpect(double M, double N) {
double max = 0.0;
for (double i = M; i > 0; i--)
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;
}
ผลลัพธ์
1.875