random.seed () не работает с random.choice () - PullRequest
2 голосов
/ 16 апреля 2020

Итак, я пытаюсь составить список чисел с желаемой вероятностью; проблема в том, что random.seed() не работает в этом случае.

M_NumDependent = []

for i in range(61729):
    random.seed(2020)
    n = np.random.choice(np.arange(0, 4), p=[0.44, 0.21, 0.23, 0.12])
    M_NumDependent.append(n)
print(M_NumDependent)

желаемый вывод должен быть таким же, если random.seed() работает, но вывод будет отличаться каждый раз, когда я его запускаю. Кто-нибудь знает, есть ли функция, выполняющая аналогичную работу seed() для random.choice()?

Ответы [ 2 ]

2 голосов
/ 16 апреля 2020

Вы случайно устанавливаете random.random.seed() вместо numpy.random.seed().


Вместо

random.seed(2020)

используйте

import numpy as np 


np.random.seed(2020)

, и ваши результаты всегда будут воспроизводимы.

1 голос
/ 16 апреля 2020

numpy использует свой собственный генератор псевдослучайных данных. Вы можете заполнить генератор случайных чисел Numpy с помощью np.random.seed(..) [numpy -doc] :

<b>np.random</b>.seed(2020)

Например:

>>> np.random.seed(2020)
>>> np.random.choice(np.arange(0, 4), p=[0.44, 0.21, 0.23, 0.12])
3
>>> np.random.seed(2020)
>>> np.random.choice(np.arange(0, 4), p=[0.44, 0.21, 0.23, 0.12])
3
>>> np.random.seed(2020)
>>> np.random.choice(np.arange(0, 4), p=[0.44, 0.21, 0.23, 0.12])
3
>>> np.random.choice(np.arange(0, 4), p=[0.44, 0.21, 0.23, 0.12])
2

Как вы можете видеть, мы каждый раз выбираем 3, тогда как если мы не запускаем генератор случайных чисел, 2 является следующим элементом после 3.

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