Как сгенерировать случайное число с известной вероятностью? - PullRequest
0 голосов
/ 25 апреля 2019

Я хотел бы сгенерировать случайное число между x и y с известной вероятностью. Например, используя Output=randint(0,2), я знаю, что существует 33% вероятность того, что Output равно 1.

Точно так же, если Output=randint(0,3) я знаю, что есть 25% -ная вероятность того, что Output равно 1.

Как я могу сгенерировать случайное число, подобное приведенному выше, чтобы убедиться, что есть 40% вероятность того, что Output равно 1?

Большое спасибо

Ответы [ 2 ]

1 голос
/ 25 апреля 2019

Здесь у меня есть альтернативное решение, выглядит короче, и поскольку нет операторов if, оно должно быть намного быстрее.
Кроме того, вы можете легко изменить, какое число должно быть возвращено с вероятностью 60%

a = [1,1,0,0,0]
num = a[randint(0,4)]

В качестве альтернативы здесь предлагается версия с одной строкой:

num = list((1,1,0,0,0))[randint(0,4)]
1 голос
/ 25 апреля 2019

Не уверен, какова ваша цель здесь, как насчет получения 40%, давая фиксированный диапазон, и чем манипулировать результатами?

Например, это даст вам 40% значение 1 и 30% 2 или 3

num = randint(0,9)

if num <= 3:
   num = 1
elif num <= 6:
   num = 2
else:
   num = 3
...