Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 주어진 목표물을 명중할 개별 확률일 때 A가 경기에서 승리할 확률


2명의 플레이어가 있다고 가정해 보겠습니다. A와 B가 모두 경기에서 이기고 패널티를 받으려고 한다고 가정해 보겠습니다. 4개의 정수 변수 a, b, c, d가 주어졌을 때 A가 페널티를 먼저 받을 확률은 a/b이고 B가 페널티를 먼저 받을 확률은 c/d입니다.

먼저 페널티를 득점하는 사람이 경기에서 승리하며 주어진 문제 설명 프로그램에 따라 A가 경기에서 승리할 확률을 찾아야 합니다.

입력

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

출력

probability is 0.5333

입력

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

출력

probability is 0.523

아래 프로그램에서 사용된 접근 방식은 다음과 같습니다.

  • 4개의 정수 변수 a, b, c, d의 값 입력

  • 총 확률에서 B가 경기에서 승리할 확률을 빼면 A가 경기에서 승리할 확률이 나옵니다.

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

    여기서 e는 A가 경기에서 승리할 확률이고 f는 B가 경기에서 승리할 확률입니다.

  • A가 경기에서 승리할 확률 표시

알고리즘

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

예시

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

출력

위의 코드를 실행하면 다음 출력이 생성됩니다 -

probability is 0.5333