Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Tìm xác suất người chơi thắng khi biết xác suất bắn trúng đích trong C++

Trong bài toán này, cho bốn giá trị p, q, r, s. Nhiệm vụ là tìm xác suất người chơi thắng khi biết xác suất bắn trúng đích.

Hai người chơi bắn cung. Xác suất người 1 trúng = p/q. Xác suất người 2 trúng = r/s. Tìm xác suất người 1 thắng.

Ví dụ minh họa:

Đầu vào

p = 3, q = 5, r = 2, s = 5

Đầu ra

0.789

Phương pháp giải

Cần kiến thức xác suất. Vì không giới hạn số lượt bắn, tính toán độc lập số lần thử.

P1 = p/q, miss = 1 - p/q. P2 = r/s, miss = 1 - r/s.

Xác suất người 1 thắng (vô hạn lượt):

P1 + (miss1*miss2*P1) + (miss1*miss2*miss1*miss2*P1) + ...

Đây là cấp số nhân vô hạn: A = P1, R = (1-P1)*(1-P2). Tổng S = A/(1-R).

$$S=\frac{\frac{p}{q}}{1-(1-\frac{p}{q})(1-\frac{r}{s})}$$

Chương trình minh họa:

Ví dụ

#include <iostream> 
using namespace std; 

double calcWinningPropP1(double p, double q, double r, double s){ 
    return (p / q) / (1 - ( (1 - (p/q)) * (1 - (r/s)) ) ); 
} 

int main() { 
    double p = 3, q = 5, r = 2, s = 5; 
    cout<<"The probability of player 1 winning is "<<calcWinningPropP1(p, q, r, s); 
    return 0; 
}

Kết quả

The probability of player 1 winning is 0.789474