2015-09-08 5 views
2

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

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

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

+1

... так откуда вы это читали? В чем проблема с 'np.random.seed'? – jonrsharpe

+1

В [этот вопрос] (http://stackoverflow.com/questions/5836335/consistenly-create-same-random-numpy-array). Посмотрите на второй ответ, а также на [этот комментарий] (http://stackoverflow.com/questions/5836335/consistenly-create-same-random-numpy-array#comment6702590_5836372) – kujaw

+0

Что вы попробовали? Какой результат вы получили, что заставляет вас думать, что это не сработало? –

ответ

7

Это правда, что иногда бывает полезно убедиться, что вы получаете свою энтропию из определенного (неглобального) потока. В принципе, все, что вам нужно сделать, - создать объект 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 вокруг, как хотите, и иметь несколько случайных потоков (если вы хотите, чтобы определенный процесс был таким же, пока другие изменения и т. Д.)

+0

Отлично, это то, что я искал. Я попытался использовать RandomState так же, как random.seed, чтобы комбинировать RandomState с функциями numpy, и это было неправильно. Теперь я понимаю, как с этим бороться. Большое спасибо. – kujaw

 Смежные вопросы

  • Нет связанных вопросов^_^