如何取消 numpy seed() 的效果?

u2g*_*les 10 python numpy random-seed

我想在程序的第一部分使用 np.random.seed() 并在第二部分取消它。再次,

  • 在我的 python 文件的第一部分,我希望在每次执行时生成相同的随机数
  • 在第二部分,我希望在每次执行时生成不同的随机数

ffe*_*rri 14

在第一部分中,用常数初始化种子,例如 0:

numpy.random.seed(0)
Run Code Online (Sandbox Code Playgroud)

在第二部分中,随时间初始化种子:

import time
t = 1000 * time.time() # current time in milliseconds
np.random.seed(int(t) % 2**32)
Run Code Online (Sandbox Code Playgroud)

(种子必须介于 0 和 2**32 - 1 之间)

注意:您可以通过调用获得类似的效果 np.random.seed()不带参数,即一个新的(伪)不可预测的序列。

每次使用相同的常量初始化种子时,都会得到相同的数字序列:

>>> np.random.seed(0)
>>> [np.random.randint(10) for _ in range(10)]
[5, 0, 3, 3, 7, 9, 3, 5, 2, 4]
>>> [np.random.randint(10) for _ in range(10)]
[7, 6, 8, 8, 1, 6, 7, 7, 8, 1]
>>> np.random.seed(0)
>>> [np.random.randint(10) for _ in range(10)]
[5, 0, 3, 3, 7, 9, 3, 5, 2, 4]
Run Code Online (Sandbox Code Playgroud)

因此,使用当前的毫秒数初始化会为您提供一些伪随机序列。