0

ネストされた for ループを使用して完了しようとしている割り当てがありますが、これを行う方法がわかりません。

する必要がある:

11 面体のサイコロのペアをシミュレートし、サイコロの可能な組み合わせごとに出た回数の割合を決定するプログラムを作成します。ユーザーにサイコロを何回振るかを入力してもらいます。サイコロの各組み合わせの確率を計算します。

ロールの結果を処理する方法がよくわかりません (これは既に把握しています)。

for(int x = 0; x < total_rolls; x++){
      int result = roll(sides); //roll(sides) gets two random ints under 12, then adds them together

    }
4

1 に答える 1

1

サイコロの値の組み合わせの頻度 (出現回数) をカウントしたいようです。

次元 11x11 の行列を作成できます。6サイコロ 1 とサイコロ 2のように組み合わせをロールするたび10に、マトリックス内のそのセルをインクリメントします。このマトリックスは、ヒストグラムと考えることができます。

次に、組み合わせのシミュレートされた確率は、行列からエントリを読み取り、それをtotal_rolls

これは次のようになります

int[][]histogram = new int[11][11];
for(int x = 0; x < total_rolls; x++){
  int dice1 = roll(sides); //result of dice 1 (1-11)
  int dice2 = roll(sides); //result of dice 2 (1-11)
  histogram[dice1-1][dice2-1]++; //increment the frequency of this event
}

double prob = 1.0*histogram[5][9]/total_rolls; //probability of combination (6,10)

2 つの詳細に注意してください。Java の配列のインデックスは 0 です。また、2 つの整数の除算は整数になるため、倍精度リテラル 1.0 を掛けて倍精度と整数の除算にします。

于 2012-10-24T23:45:01.943 に答える