Я знаю, что для того, чтобы засеять случайность numpy.random и уметь воспроизводить его, я должен:
import numpy as np
np.random.seed(1234)
но что
np.random.RandomState()
делать?
Я знаю, что для того, чтобы засеять случайность numpy.random и уметь воспроизводить его, я должен:
import numpy as np
np.random.seed(1234)
но что
np.random.RandomState()
делать?
Если вы хотите установить начальное значение, np.random...
будет использовать np.random...
, используйте np.random.seed
:
np.random.seed(1234)
np.random.uniform(0, 10, 5)
#array([ 1.9151945 , 6.22108771, 4.37727739, 7.85358584, 7.79975808])
np.random.rand(2,3)
#array([[ 0.27259261, 0.27646426, 0.80187218],
# [ 0.95813935, 0.87593263, 0.35781727]])
Используйте класс, чтобы избежать влияния на глобальное состояние numpy:
r = np.random.RandomState(1234)
r.uniform(0, 10, 5)
#array([ 1.9151945 , 6.22108771, 4.37727739, 7.85358584, 7.79975808])
И он поддерживает состояние так же, как и раньше:
r.rand(2,3)
#array([[ 0.27259261, 0.27646426, 0.80187218],
# [ 0.95813935, 0.87593263, 0.35781727]])
Вы можете увидеть состояние своего рода "глобального" класса с помощью:
np.random.get_state()
и вашего собственного экземпляра класса с:
r.get_state()
random.seed - это метод заполнения random.RandomState.
из numpy docs:
numpy.random.seed(seed=None)
Вставьте генератор.
Этот метод вызывается при инициализации RandomState. Его можно снова вызвать, чтобы повторно залить генератор. Подробнее см. RandomState.
class numpy.random.RandomState
Контейнер для псевдослучайного генератора Мерсенна Твистера.
np.random.RandomState()
создает генератор случайных чисел. Он не влияет на автономные функции в np.random
, но должен использоваться явно:
>>> rng = np.random.RandomState(42)
>>> rng.randn(4)
array([ 0.49671415, -0.1382643 , 0.64768854, 1.52302986])
>>> rng2 = np.random.RandomState(42)
>>> rng2.randn(4)
array([ 0.49671415, -0.1382643 , 0.64768854, 1.52302986])