C++のコインのN個のトスで少なくともK個のヘッドを取得する確率
確率は、利用可能なデータのセットから目的の出力を取得する可能性です。確率の範囲は0から1の間にあり、整数0は不可能の可能性を示し、1は確実性を示します。
確率とは何ですか?
数学の確率は、イベントと理由の不確実性を伝えるツールを提供します。言い換えれば、確率は、特定のイベントの発生の可能性を計算することであると言えます。これは、1から0までの数値として表すことができます。たとえば、偏りのないコインが投げられたときに頭を取得する確率、または3を取得する確率サイコロを振ったとき。
ここで、質問に戻ると、N回のコインで少なくともk個のヘッドを獲得する確率を見つける必要があります。
コインが3つあり、kが2であるように、コインを投げる方法は23=8つあります-
HHH、HTH、HHT、HTT、THH、THT、TTT、TTH。
そして、少なくとも2つのヘッドを含むセットは-
HHH、HTH、HHT、THH。
したがって、確率は4/8または0.5になります。
例
Input: k = 1, n = 3 Output: 0.875 Input: k = 3, n = 6 Output: 0.65625
上記の問題を解決するために私たちが従うアプローチ-
- nとkを入力として使用します。
- 階乗の値を配列に格納し、必要なときにいつでも呼び出します。
- 計算を実行します。
- 結果を返します。
アルゴリズム
Step 1-> declare function to calculate the probability of getting at least k heads in n tosses double probability(int k, int n) Declare and set double check = 0 Loop For i = k and i <= n and ++i Set check += temp[n] / (temp[i] * temp[n - i]) End Call check = check / (1LL << n) return check Step 2-> declare function to precompute the value void precompute() Set temp[0] = temp[1] = 1 Loop For i = 2 and i < 20 and ++i Set temp[i] = temp[i - 1] * i Step 3-> In main Call precompute() Call probability(1, 3) Stop
例
#include<bits/stdc++.h> using namespace std; #define size 21 double temp[size]; // calculate probability of getting at least k heads in n tosses. double probability(int k, int n) { double check = 0; for (int i = k; i <= n; ++i) check += temp[n] / (temp[i] * temp[n - i]); check = check / (1LL << n); return check; } void precompute() { temp[0] = temp[1] = 1; for (int i = 2; i < 20; ++i) temp[i] = temp[i - 1] * i; } int main() { precompute(); // Probability of getting 1 head out of 3 coins cout<<"probability is : "<<probability(1, 3) << "\n"; // Probability of getting 3 head out of 6 coins cout<<"probability is : "<<probability(3, 6) <<"\n"; return 0; }
出力
probability is : 0.875 probability is : 0.65625
-
C++の配列に存在するキーKの確率
サイズ「n」の配列で与えられ、タスクは、配列で利用可能な場合、与えられた要素kの確率を見つけることです。 配列内の要素の数に等しい「n」まで配列全体をトラバースし、指定された要素またはキー「k」を検索します。要素がその確率を計算するよりも配列に存在する場合は、0を出力します。 入力 arr[] = { 1, 2, 3, 4, 5, 6} K = 5 出力 probability of a key 5 in an array is :0.166 入力 arr[] = { 1,2,3,4,5,6,7 } K = 8 出力 probability of a key 5 in an
-
C++のチェス盤でのナイト確率
NxNチェス盤が1つあるとすると、騎士はr番目の行とc番目の列から開始し、正確にK回移動しようとします。ここでは、行と列に0のインデックスが付けられているため、左上の正方形は(0、0)であり、右下の正方形は(N-1、N-1)です。 騎士はセルから8つの異なるセルに移動できます。これは、この図に示されています- 騎士が移動するたびに、8つの可能な移動の1つをランダムに選択します。騎士は、正確にK移動するか、チェス盤から離れるまで移動を続けます。騎士が動きを止めた後もボードに留まる確率を見つける必要があります。 したがって、入力が3、2、0、0のような場合、出力は0.0625になります