【问题标题】:Set numpy.random.seed on a global scale [closed]在全球范围内设置 numpy.random.seed [关闭]
【发布时间】:2020-10-22 07:35:14
【问题描述】:

如何在全球范围内设置numpy.random.seed(0)?看来我每次调用np.random 函数时都必须重置种子。

import numpy as np

np.random.seed(0)
print(np.random.randint(0,10,2))
np.random.seed(0)
print(np.random.randint(0,10,2))
print(np.random.randint(0,10,2))

np.random.seed(0)
print(np.random.rand())
np.random.seed(0)
print(np.random.rand())
print(np.random.rand())


[5 0]
[5 0]
[3 3]
0.5488135039273248
0.5488135039273248
0.7151893663724195

【问题讨论】:

  • 如果你想要固定数字,使用随机数有什么意义?
  • 这可能会回答你的问题:stackoverflow.com/a/21494630/14280520
  • 如果您能回答您认为需要重置它的原因,那么我们将有机会帮助您
  • 对于您的要求,几乎没有可以想象的用例——您几乎肯定会犯错误。你认为你为什么需要这个?
  • 您采取了错误的方法。您要求的东西会破坏程序中任何地方使用 NumPy 随机例程的所有代码,包括您没有编写且不想影响的内容,以及您确实编写的内容与这部分无关。与其尝试“在全球范围内”设置种子,不如在本地,通过使用您自己的numpy.random.RandomState 实例(或者更好,在新代码中使用numpy.random.Generator)来设置。跨度>

标签: python numpy random random-seed


【解决方案1】:

这就是种子的实际工作方式。您设置了一个“种子”值,该值决定了所有后续生成的随机数。您可以将种子视为随机生成数字的起点。每次设置种子时,都会设置生成随机序列的起点。

每次代码生成一个随机数时,它都会以随机(但确定性)的方式从种子/起点“前进”。设置种子将随机数生成器置于特定状态,每次都将遵循相同的随机路径(由于是确定性特征)。

【讨论】:

  • 你的解释是正确的。但是,这并不能回答问题。我想避免每次运行 np.random 函数时设置种子。我想全局设置它。问题是这是否可能?
  • 正如其他人指出的那样,这是使用种子的常用方法,但要回答您的问题,不知道这是否可能。一种解决方法是在代码开始时生成一组随机数,并将它们存储在变量/列表中。然后每次您需要它们时,请参考此列表。
猜你喜欢
  • 2021-11-23
  • 2022-07-20
  • 2017-01-03
  • 1970-01-01
  • 1970-01-01
  • 2019-06-27
  • 2014-08-17
  • 1970-01-01
  • 2011-07-03
相关资源
最近更新 更多