Computer >> Máy Tính >  >> Lập trình >> C ++

Tìm xác suất để người chơi thắng khi xác suất bắn trúng mục tiêu được đưa ra trong C ++


Trong bài toán này, chúng ta có bốn giá trị p, q, r, s. Nhiệm vụ của chúng ta là Tìm xác suất người chơi thắng khi xác suất bắn trúng mục tiêu được đưa ra.

Ở đây, chúng tôi có hai người chơi đang chơi một trò chơi bắn cung. Và xác suất của người chơi 1 bắn trúng mục tiêu được xác định là p / q . Xác suất để người chơi 2 bắn trúng mục tiêu được xác định là r / s. Chúng ta cần tìm xác suất của một người chơi thắng trò chơi.

Hãy lấy một ví dụ để hiểu vấn đề,

Đầu vào

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

Đầu ra

0.789

Phương pháp tiếp cận giải pháp

* Cách tiếp cận này yêu cầu kiến ​​thức về xác suất.

Vì không có giới hạn trên về số lần người chơi có thể có cơ hội bắn trúng mục tiêu. Cả hai đều có thể đạt mục tiêu bất kỳ số lần nào, điều này làm cho tình huống chiến thắng được tính toán phụ thuộc vào số lần thử nghiệm.

Vì vậy,

Giả sử xác suất của một người chơi bắn trúng mục tiêu là P1 =p / q, điều này làm cho xác suất bắn trượt 1 - p / q.

Giả sử xác suất để người chơi hai bắn trúng mục tiêu là P2 =r / s, làm cho xác suất bắn trượt là 1 - r / s.

Bây giờ, đối với số lần thử vô hạn, xác suất để người chơi 1 chiến thắng có thể là,

000win(P1) + (lost(P1)*lost(P2)*win(P1)) +
(lost(P1)*lost(P2)*lost(P1)*lost(P2)*win(P1) + ….

Có thể được xây dựng dưới dạng,

P1 + ((1 - P1) * (1 - P2) * (P1)) + ((1 - P1) * (1 - P2) * (1 - P1) * (1 - P2) * (P1))…

Đây là GP vô hạn trong đó,

A = P1
R = [(1 - P1)*(1 - P2)]

Tổng sẽ là,

S = A/ (1- R) , as R is less than 1.

$$ S =\ left (\ frac {\ left (\ frac {p} {p} \ right)} {1- \ left (1- \ frac {p} {p} \ right) * \ left (1- \ frac {p} {p} \ right)} \ right) $$

Chương trình minh họa hoạt động của giải pháp của chúng tôi,

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;
}

Đầu ra

The probability of player 1 winning is 0.789474