numpy.random.RandomState

class numpy.random.RandomState(seed=None)

Класс random.RandomState() может использоваться в качестве контейнера для генератора случайных чисел.

Данный класс позволяет создавать несколько объектов - генераторов, которые могут использоваться в разных местах кода, но гарантированно выдавать одни и те же случайные значения. Это очень удобно, если вам необходима воспроизводимость расчетов, или сравнение разных алгоритмов на одних и тех же случайных данных.

Параметры:
seed - целое положительное число.
Число в интервале [0, 2**32] - определяет внутреннее состояние генератора..
Смотрите так же:
seed, get_state


Примеры

Использование данного класса очень удобно при очень частом обращении к модулю random. Сравните:

>>> import numpy as np
>>> 
>>> np.random.seed(0)
>>>
>>> np.random.rand(5)
array([0.5488135 , 0.71518937, 0.60276338, 0.54488318, 0.4236548 ])
>>> 
>>> np.random.randint(0, 10, 5)
array([5, 0, 3, 3, 7])
>>> 
>>> np.random.beta(2, 3, 5)
array([0.60358975, 0.79868334, 0.31163262, 0.49864896, 0.41528042])

Или с использованием RandomState():

>>> rng = np.random.RandomState(0)
>>>
>>> rng.rand(5)
array([0.5488135 , 0.71518937, 0.60276338, 0.54488318, 0.4236548 ])
>>> 
>>> rng.randint(0, 10, 5)
array([5, 0, 3, 3, 7])
>>> 
>>> rng.beta(2, 3, 5)
array([0.60358975, 0.79868334, 0.31163262, 0.49864896, 0.41528042])

Так же иногда бывает очень удобно иметь несколько генераторов с предустановленным состоянием:

>>> RS_1 = np.random.mtrand.RandomState([0, 1])
>>> RS_2 = np.random.mtrand.RandomState([0, 1])
>>> 
>>> for i in range(10):
...     print('RS_1 ->', RS_1.randint(10),
...           'RS_2 ->', RS_2.randint(10))
... 
RS_1 -> 7 RS_2 -> 7
RS_1 -> 6 RS_2 -> 6
RS_1 -> 2 RS_2 -> 2
RS_1 -> 9 RS_2 -> 9
RS_1 -> 3 RS_2 -> 3
RS_1 -> 0 RS_2 -> 0
RS_1 -> 1 RS_2 -> 1
RS_1 -> 1 RS_2 -> 1
RS_1 -> 5 RS_2 -> 5
RS_1 -> 4 RS_2 -> 4
>>> 
>>> RS_1.normal(0, 1)
-0.10202330473543429
>>> RS_2.normal(0, 1)
-0.10202330473543429