Разница между np.random.seed() и np.random.RandomState() Я знаю, что для того, чтобы засеять случайность numpy.random и уметь воспроизводить его, я должен: import numpy as np np.random.seed(1234) но что np.random.RandomState() делать? Ответ 1 Если вы хотите установить начальное значение, 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() Ответ 2 random.seed - это метод заполнения random.RandomState. из numpy docs: numpy.random.seed(seed=None) Вставьте генератор. Этот метод вызывается при инициализации RandomState. Его можно снова вызвать, чтобы повторно залить генератор. Подробнее см. RandomState. class numpy.random.RandomState Контейнер для псевдослучайного генератора Мерсенна Твистера. Ответ 3 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])
Ответ 1 Если вы хотите установить начальное значение, 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()
Ответ 2 random.seed - это метод заполнения random.RandomState. из numpy docs: numpy.random.seed(seed=None) Вставьте генератор. Этот метод вызывается при инициализации RandomState. Его можно снова вызвать, чтобы повторно залить генератор. Подробнее см. RandomState. class numpy.random.RandomState Контейнер для псевдослучайного генератора Мерсенна Твистера.
Ответ 3 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])