Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ค่าคาดหมายของจุดสูงสุดจากการทอยลูกเต๋า N ครั้งใน C++


ภาพรวมปัญหา

คำนวณค่าคาดหมาย (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