Как выбрать число из массива с заданным распределением вероятностей - PullRequest
0 голосов
/ 10 января 2019

Я хочу выбрать число из списка с заданной вероятностью.

Я использую numpy и определил список на выбор. У меня также есть распределение вероятностей, соответствующее записям в моем списке.

from numpy import random

a = [0, 1]     # select one entry from this list
p = [0.0, 1.0] # probability distribution
print(random.choice(a, 1, p))

С дистрибутивом p Я должен получить только 1. Однако, когда я запускаю свой код, я получаю 0 слишком часто. Я думаю, что мой дистрибутив на самом деле не влияет на выбор.

1 Ответ

0 голосов
/ 10 января 2019

Из документации numpy.random.choice:

выбор (а, размер = нет, заменить = верно, р = нет)

Когда вы вызываете choice(a, 1, p), третий позиционный аргумент p используется для параметра replace 1 , а не для параметра p, как вы собираетесь.

Вам либо нужно вставить другой позиционный аргумент для replace, чтобы p стал четвертым позиционным аргументом:

choice(a, 1, True, p)

или явно передать p в качестве аргумента ключевого слова:

choice(a, 1, p=p)

1 Это работает, потому что список также может быть оценен в логическом контексте. В этом случае [0.0, 1.0] как непустой список будет оцениваться как True.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...