如何直接复制np.random结果?

How to replicate np.random result directly?

import numpy as np
np.seed(1)
a=np.random.randint(10)
b=np.random.randint(10)

我知道在设置随机种子后,每次我运行这段代码,a和b都会分别被初始化为某个固定值。

我的问题是:在一个新的运行中,如何不先生成a的值而直接生成b的值?

在我看来,我需要这样的东西:

import numpy as np
np.seed(1)
a = np.random.randint(10)
# DO SOMETHING to get some situation-specific information, something like a new seed

所以在新的 运行 中,我可以这样做:

# DO SOMETHING to load or set that situation-specific information
b = np.random.randint(10)

有什么办法吗?

IIUC,使用numpy.random.get_stateset_state

import numpy as np

a = np.random.randint(10)
a
# 5

# Now get the current state
after_a = np.random.get_state()

b = np.random.randint(10)
b
# 8

# After some work...

np.random.set_state(after_a)

b = np.random.randint(10)
b
# 8

你可以只运行随机函数,不需要为a设置它。

第一次

np.random.randint(10)
# DO SOMETHING to load or set that situation-specific information
b = np.random.randint(10)