Я пытаюсь создать рандомизатор, который будет использовать Монте-Карло Хит или Мисс Симуляция.
У меня есть пара ключ-значение, которая представляет идентификатор и значение вероятности:
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, тогда будет выбран идентификатор 2.
Каков наилучший способ реализовать это, учитывая, что у меня есть массив значений типа double?