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

Xác suất A thắng trận khi từng xác suất bắn trúng mục tiêu được cho trong C ++


Được đưa ra với hai người chơi, giả sử A và B cả hai đều đang cố gắng thực hiện một quả phạt đền để giành chiến thắng trong trận đấu. Cho với bốn biến số nguyên a, b, c, d nên xác suất để A bị phạt trước là a / b và xác suất để B bị phạt trước là c / d.

Người sút quả phạt đền trước sẽ thắng trận đấu và theo chương trình bài toán đã cho phải tìm xác suất để A thắng trận đấu.

Đầu vào

a = 10, b = 20, c = 30, d = 40

Đầu ra

probability is 0.5333

Đầu vào

a = 1, b = 2, c = 10, d = 11

Đầu ra

probability is 0.523

Phương pháp tiếp cận được sử dụng trong chương trình dưới đây như sau

  • Nhập giá trị của bốn biến số nguyên a, b, c, d

  • Lấy tổng xác suất trừ đi xác suất B thắng trận và chúng ta sẽ nhận được kết quả xác suất A thắng trận

    e * (1 / (1 - (1 - f) * (1 - f)))))

    Trong đó, e là xác suất để A thắng trận và f là xác suất B thắng

  • Hiển thị xác suất của A thắng trận đấu

Thuật toán

Start
Step 1→ Declare function to calculate the probability of winning
   double probab_win(int a, int b, int c, int d)
      Declare double e = (double)a / (double)b
      Declare double f = (double)c / (double)d
      return (e * (1 / (1 - (1 - f) * (1 - f))))
Step 2→ In main()
   Declare variable as int a = 10, b = 20, c = 30, d = 40
   Call probab_win(a, b, c, d)
Stop

Ví dụ

#include <bits/stdc++.h>
using namespace std;
// calculate the probability of winning the match
double probab_win(int a, int b, int c, int d){
   double e = (double)a / (double)b;
   double f = (double)c / (double)d;
   return (e * (1 / (1 - (1 - f) * (1 - f))));
}
int main(){
   int a = 10, b = 20, c = 30, d = 40;
   cout<<"probability is "<<probab_win(a, b, c, d);
   return 0;
}

Đầu ra

Nếu chạy đoạn mã trên, nó sẽ tạo ra kết quả sau -

probability is 0.5333