【问题标题】:np.random.seed need to be called every time每次都需要调用 np.random.seed
【发布时间】:2018-06-27 20:19:33
【问题描述】:

以下两个版本代码应该给出相同的输出。看起来 np.random.seed 每次都需要调用。对吗?

有没有办法设置一次种子,每次都生成相同的随机数

np.random.seed(0)
for _ in range(10):
    print(np.random.randint(low=1, high=100))

输出: 45 48 65 68 68 10 84 22 37 88

for _ in range(10):
    np.random.seed(0)
    print(np.random.randint(low=1, high=100))

输出:45 45 45 45 45 45 45 45 45 45

【问题讨论】:

  • Er.. 在第一个版本中,您设置一次种子,然后重复请求一个随机值,在第二个版本中,您在每次迭代中设置种子,然后请求一个每次都相同的随机值,你期待什么?
  • 嗯,不。如果您在 randint 之前播种,您将始终获得相同的值
  • "以下两个版本代码应该给出相同的输出。"为什么?
  • 两个代码块不应给出相同的输出。检查此答案以很好地解释 np.random.seed(0) 的作用:stackoverflow.com/questions/21494489/…
  • 我已经编辑了要添加的问题 - “有没有办法设置一次种子,以便每次生成相同的随机数”

标签: python numpy


【解决方案1】:

除非您使用加密安全的随机数生成器,否则随机数并不是真正随机的。您正在使用 pseudo 随机数生成器,这意味着您正在对预定义数字的固定表进行迭代。播种随机数意味着在该表中选择您要首先使用的条目。在您创建随机数之前每次播种它到相同的位置意味着您将始终获得相同的数字。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-24
    • 2021-07-19
    • 1970-01-01
    • 2013-12-10
    • 2018-12-19
    相关资源
    最近更新 更多