Как использовать random.RandomState

Я бы хотел, чтобы мой скрипт создавал один и тот же массив чисел каждый раз, когда я запускаю скрипт. Раньше я использовал np.random.seed(). Например:

np.random.seed(1)
X = np.random.random((3,2))

Я читал, что вместо np.random.seed() нужно использовать RandomState. Но я понятия не имею, как его использовать, пробовал несколько комбинаций, но ничего не помогло.


person kujaw    schedule 08.09.2015    source источник
comment
...так где ты это прочитал? В чем проблема с np.random.seed?   -  person jonrsharpe    schedule 08.09.2015
comment
В этом вопросе. Посмотрите на второй ответ, а также на этот комментарий   -  person kujaw    schedule 08.09.2015
comment
Что вы пробовали? Какой вывод вы получили, что заставляет вас думать, что это не сработало?   -  person Robert Kern    schedule 08.09.2015
comment
@RobertKern Что-то вроде: np.random.RandomState(1) np.random.random((3,2)) Я просто хочу знать, как использовать этот RandomState, я все еще новичок в программировании, Python и особенно NumPy   -  person kujaw    schedule 08.09.2015


Ответы (1)


Это правда, что иногда полезно убедиться, что вы получаете свою энтропию из определенного (не глобального) потока. По сути, все, что вам нужно сделать, это создать объект RandomState, а затем использовать его методы вместо использования случайных функций numpy. Например, вместо

>>> np.random.seed(3)
>>> np.random.rand()
0.5507979025745755
>>> np.random.randint(10**3, 10**4)
7400

Вы могли бы написать

>>> R = np.random.RandomState(3)
>>> R
<mtrand.RandomState object at 0x7f79b3315f28>
>>> R.rand()
0.5507979025745755
>>> R.randint(10**3, 10**4)
7400

Так что все, что вам нужно сделать, это сделать R, а затем использовать R. вместо np.random. — довольно просто. И вы можете передавать R по своему усмотрению и иметь несколько случайных потоков (если вы хотите, чтобы определенный процесс был одинаковым, а другой изменялся и т. д.)

person DSM    schedule 08.09.2015
comment
Отлично, это то, что я искал. Я пытался использовать RandomState так же, как random.seed, чтобы объединить RandomState с функциями numpy, и это было неправильно. Теперь я понимаю, как с этим бороться. Большое Вам спасибо. - person kujaw; 08.09.2015
comment
Что произойдет, если я использую R без передачи семени? Это то же самое, что всегда использовать случайное семя? - person AleB; 08.10.2020