ターゲットに当たる確率がC++で指定されている場合に、プレーヤーが勝つ確率を見つけます
この問題では、4つの値p、q、r、sが与えられます。私たちの仕事は、ターゲットに当たる確率が与えられたときにプレーヤーが勝つ確率を見つけることです。
ここでは、アーチェリーのゲームをしている2人のプレーヤーがいます。また、プレーヤー1がターゲットに当たる確率は、 p / qとして定義されます。 。プレーヤー2がターゲットに当たる確率はr/sとして定義されます。プレーヤー1がゲームに勝つ確率を見つける必要があります。
問題を理解するために例を見てみましょう
入力
p = 3, q = 5, r = 2, s = 5
出力
0.789
ソリューションアプローチ
* このアプローチには、確率の知識が必要です。
なぜなら、プレイヤーがターゲットをヒットするチャンスを得ることができる回数に上限はありません。どちらも目標を何度でも達成できるため、勝利状況の計算は試行回数に依存しません。
だから、
プレーヤー1がターゲットに当たる確率がP1=p / qであるとすると、これにより1-p/qが失われる確率が高くなります。
プレーヤー2がターゲットに当たる確率がP2=r / sであるとすると、1-r/sを逃す確率になります。
これで、試行回数が無限の場合、プレーヤー1が勝つ確率は次のようになります。
000win(P1) + (lost(P1)*lost(P2)*win(P1)) + (lost(P1)*lost(P2)*lost(P1)*lost(P2)*win(P1) + ….
これは次のように定式化できます
P1 +((1-P1)*(1-P2)*(P1))+((1-P1)*(1-P2)*(1-P1)*(1-P2)*(P1))…
これは無限のGPであり、
A = P1 R = [(1 - P1)*(1 - P2)]
合計は、
になります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)$$
ソリューションの動作を説明するプログラム
例
#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; }
出力
The probability of player 1 winning is 0.789474
-
マルコフ連鎖の特定の時間における状態の確率を見つけるためのC++プログラム
この記事では、マルコフ連鎖の特定の期間に初期状態から最終状態に到達する確率を見つけるプログラムについて説明します。 マルコフ連鎖は、さまざまな状態と、ある状態から別の状態に移行する関連する確率で構成されるランダムプロセスです。ある状態から別の状態に移行するには、単位時間がかかります。 マルコフ連鎖は有向グラフで表すことができます。この問題を解決するために、与えられたマルコフ連鎖から行列を作ることができます。そのマトリックスでは、位置(a、b)の要素は、状態「a」から状態「b」に移行する確率を表します。 これは、式を使用した確率分布への再帰的アプローチに任せます P(t) = Matrix
-
特定の点をカバーする最適な長方形を見つけるためのC++プログラム
この記事では、特定のポイントをカバーする最適な長方形を見つけるプログラムについて説明します。 この問題では、点の座標(x、y)と長さ/幅の比率=l / b(たとえば)が与えられます。与えられた点を含み、その寸法が与えられた比率に従う長方形の座標を見つける必要があります。複数の長方形が存在する場合は、ユークリッドの中心と指定された点の間の距離が最も短い長方形を選択する必要があります。 これを解決するには、まず比率l/bを最小化します。その後、min(n / l、m / b)値が(n、m)領域(2次元スペースを許可)にとどまることがわかります。まず、(x、y)が長方形の中心のみであると仮定しま