gpt4 book ai didi

python - 如何检索 NumPy 随机数生成器的当前种子?

转载 作者:IT老高 更新时间:2023-10-28 20:35:26 26 4
gpt4 key购买 nike

以下导入 NumPy 并设置种子。

import numpy as np
np.random.seed(42)

但是,我对设置种子不感兴趣,而对阅读它更感兴趣。 random.get_state() 似乎不包含种子。 documentation没有给出明显的答案。

如果我没有手动设置,我如何检索 numpy.random 使用的当前种子?

我想使用当前的种子来延续流程的下一次迭代。

最佳答案

简短的回答是您根本不能(至少一般情况下不能)。

Mersenne Twister numpy 使用的 RNG 有 219937-1 个可能的内部状态,而单个 64 位整数只有 264 个可能的值。因此,不可能将每个 RNG 状态映射到唯一的整数种子。

可以直接使用 np.random.get_state 获取和设置 RNG 的内部状态和 np.random.set_state . get_state 的输出是一个元组,其第二个元素是一个 (624,) 32 位整数数组。这个数组有足够多的位来表示 RNG 的每个可能的内部状态 (2624 * 32> 219937-1)。

get_state 返回的元组可以像种子一样使用,以创建可重现的随机数序列。例如:

import numpy as np

# randomly initialize the RNG from some platform-dependent source of entropy
np.random.seed(None)

# get the initial state of the RNG
st0 = np.random.get_state()

# draw some random numbers
print(np.random.randint(0, 100, 10))
# [ 8 76 76 33 77 26 3 1 68 21]

# set the state back to what it was originally
np.random.set_state(st0)

# draw again
print(np.random.randint(0, 100, 10))
# [ 8 76 76 33 77 26 3 1 68 21]

关于python - 如何检索 NumPy 随机数生成器的当前种子?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32172054/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com