我正在尝试制作一个使用 Monte Carlo Hit 或 Miss Simulation 的随机发生器。
我有一个表示 ID 和概率值的键值对:
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。
鉴于我有一个双打数组,实现这一点的最佳方法是什么?