C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C++のN個のコンテナーからの1つのタイプの確率の最大化


確率Pi=(好ましい結果の数)/(結果の総数)

与えられたのは、存在するコンテナの数であるNです。そして、2つの数XとYのN個のコピーがあります。タスクは、Xのコピーを描画する確率が最大になるように、1つの数XのコピーをN個のコンテナーに分割することです。上記から、Piを最大化するには、分子(好ましい結果の数)を最大化するか、分母(結果の総数)を最小化することができます。これは、1つのコンテナーのみにYのコピーがあり、すべてのコンテナーにXのコピーがある方法で実行できます。N-1コンテナーにはそれぞれXのコピー(XのN-1コピー)があります。また、1つのコンテナにはYのコピーが1つ、YのコピーがNつあります。

確率(最初の(n-1)コンテナーからのXのコピー)=P n-1 =1

確率(最後のコンテナからのXのコピー)=P n =1 /(n + 1)

Pm = Pn-1 * (n – 1) + Pn
∴ Pm = n / (n + 1)

入力 − n =1

出力 − N=1の最大確率は0.5です

説明 −コンテナが1つと、XとYのコピーがそれぞれ1つしかないため。 Xを引く最大確率は0.5です。

入力 − n =3

出力 − N=1の最大確率は0.75

説明 −ここでは、すべてのコンテナにXのコピーが1つあり、最後のコンテナにはYのコピーが3つすべてあります。

以下のプログラムで使用されているアプローチは次のとおりです

  • コンテナの数であるNの整数値を入力します。

  • XがmaxPと言う最大確率を格納する変数を宣言します。

  • 与えられたNについて、maxPをN /(N + 1)として計算します。

#include <bits/stdc++.h>
using namespace std;
int main(){
   int N=3;
   double maxP = (double)N / (N + 1);
   cout << "Maximum Probability for N = " << N << " is, " <<maxP << endl;
   return 0;
}

出力

上記のコードを実行すると、次の出力が生成されます-

Maximum Probability for N = 3 is, 0.75

  1. 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

  2. C++のチェス盤でのナイト確率

    NxNチェス盤が1つあるとすると、騎士はr番目の行とc番目の列から開始し、正確にK回移動しようとします。ここでは、行と列に0のインデックスが付けられているため、左上の正方形は(0、0)であり、右下の正方形は(N-1、N-1)です。 騎士はセルから8つの異なるセルに移動できます。これは、この図に示されています- 騎士が移動するたびに、8つの可能な移動の1つをランダムに選択します。騎士は、正確にK移動するか、チェス盤から離れるまで移動を続けます。騎士が動きを止めた後もボードに留まる確率を見つける必要があります。 したがって、入力が3、2、0、0のような場合、出力は0.0625になります