У меня есть симуляция, которая требует генерации N
случайных чисел на каждой итерации. Однако N
варьируется в зависимости от состояния симуляции. Поскольку N
меняется, после вызовов numpy.random()
дают разные результаты. Однако я бы хотел, чтобы следующие вызовы numpy.random()
не влияли на N
.
. Я решил эту проблему путем (1) генерации большого случайного целого числа перед вызовом numpy.random()
и затем (2 ) установить случайное начальное число как целое число после вызова numpy.random()
(см. ниже). Однако это кажется неуклюжим.
Есть ли лучший способ управления состоянием numpy .random, на который не влияет аргумент size
?
import numpy as np
N=10
# set seed
np.random.seed(0)
# generate N numbers
a = np.random.normal(size=N)
# check its state
print(np.random.randint(1e4))
Этот вызов randint()
возвращает 2599
# set seed
N = 1
np.random.seed(0)
# generate N numbers
b = np.random.normal(size=N)
# check its state
print(np.random.randint(1e4))
Этот вызов randint()
возвращает 4859
Потенциальное решение:
N = 10
# set seed
np.random.seed(0)
# generate a large random integer
rand_int = np.random.randint(1e6)
# generate N numbers
b = np.random.normal(size=N)
# reset the seed
np.random.seed(rand_int)
# check its state
print(np.random.randint(1e4))
Этот вызов randint()
возвращает 5143
независимо от N