C ++
 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

  1. マルコフ連鎖の特定の時間における状態の確率を見つけるためのC++プログラム

    この記事では、マルコフ連鎖の特定の期間に初期状態から最終状態に到達する確率を見つけるプログラムについて説明します。 マルコフ連鎖は、さまざまな状態と、ある状態から別の状態に移行する関連する確率で構成されるランダムプロセスです。ある状態から別の状態に移行するには、単位時間がかかります。 マルコフ連鎖は有向グラフで表すことができます。この問題を解決するために、与えられたマルコフ連鎖から行列を作ることができます。そのマトリックスでは、位置(a、b)の要素は、状態「a」から状態「b」に移行する確率を表します。 これは、式を使用した確率分布への再帰的アプローチに任せます P(t) = Matrix

  2. 指定された数値の桁を合計するC++プログラム

    これは、C++言語で桁の合計を計算する例です。 例 #include<iostream> using namespace std; int main() {    int x, s = 0;    cout << "Enter the number : ";    cin >> x;    while (x != 0) {       s = s + x % 10;       x = x / 10;