已知C++中目標命中機率,計算A獲勝的機率


假設有兩個玩家A和B,他們都在爭取點球來贏得比賽。已知四個整型變數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

下面程式中使用的方案如下:

  • 輸入四個整型變數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

更新於:2020年8月13日

82 次瀏覽

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.