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

时间:2018-04-22 14:01:00

标签: python numpy random-seed

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

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

1 个答案:

答案 0 :(得分:4)

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

numpy.random.seed(0)

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

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

(种子必须介于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]

因此,使用当前毫秒数进行初始化可以得到一些伪随机序列。