Я пытаюсь придумать простую реализацию функции, которая принимает ряд вероятностей и соответствующих результатов, а затем позволяет мне вызывать ее, чтобы получить случайный результат в соответствии с вероятностями.
В этомВ этом случае пользователи смогут вводить вероятности с той точностью, с какой они хотят:
oracle = Oracle.new
oracle << Scenario.new(probability: 0.0001, result: 1)
oracle << Scenario.new(probability: 0.01, result: 2)
oracle << Scenario.new(probability: 0.1, result: 3)
oracle << Scenario.new(probability: nil, result: 4) #oracle will fill to 100%
result = oracle.result
С фиксированной точностью я могу манипулировать числами и использовать rand (), но даже этонемного дрянной / многословный.
Есть ли умный способ определить #result?