モンテカルロ ヒットまたはミス シミュレーションを使用するランダマイザーを作成しようとしています。
ID と確率値を表す Key-Value ペアがあります。
ID - Value
2 - 0.37
1 - 0.35
4 - 0.14
3 - 0.12
これらの値をすべて追加すると、合計は 1.0 になります。
これらの値は、「ホイール」上の「スライス」の総面積として想像できます (例: ID 2 はホイールの 37% を占め、ID 3 はホイールの 12% しか占有しません)。「範囲」に変換すると、次のようになります。
ID - Value - Range
2 - 0.37 - 0 to 37
1 - 0.35 - 37 to 72
4 - 0.14 - 72 to 86
3 - 0.12- 86 to 100
現在、Random.NextDouble() を使用して、0.0 から 1.0 の間のランダム値を生成しています。そのランダムな値は、ホイールの「スピン」と見なされます。たとえば、ランダマイザーが 0.35 を返すと、ID 2 が選択されます。
double の配列がある場合、これを実装する最良の方法は何ですか?