【问题标题】:Generating same random array each time每次生成相同的随机数组
【发布时间】:2020-05-27 19:55:10
【问题描述】:

假设我们要每次生成 1 到 10 之间的相同随机数。然后,当我运行以下命令时,每次都会得到相同的随机数:

import os
import numpy as np
import random

random.seed(30)
random.randint(1, 10)
9


random.seed(30)
random.randint(1, 10)
9

但如果我想每次生成相同的随机 4x4 矩阵,数字在 1 到 10 之间,我会得到不同的结果:

random.seed(30)
np.random.randint(10, size=(4,4))
array([[8, 2, 6, 4],
   [3, 3, 3, 5],
   [6, 2, 6, 6],
   [8, 7, 1, 1]])


 random.seed(30)
 np.random.randint(10, size=(4,4))
 array([[9, 2, 1, 6],
   [4, 3, 3, 8],
   [1, 1, 6, 6],
   [0, 2, 3, 5]])

问题。如何每次使用 random.seed() 获得相同的数组?

已添加。我添加了导入语句。

【问题讨论】:

  • 第二次运行之前,是不是先退出python再重新进入python?如果没有,您应该得到相同的结果
  • 请出示您的进口商品。看起来您正在使用来自两个不同模块的 random 方法。
  • @PM77-1:添加了导入方法。
  • 看我的回答。希望有帮助

标签: python random-seed


【解决方案1】:

您需要使用numpy.random.seed 而不是random.seed

现在,您可以混合使用 2 个不同的模块,即 numpyrandom


import numpy as np

for i in range(5):
    np.random.seed(30)
    print(np.random.randint(10, size=(4,4)))

[[5 5 4 7]
 [2 5 1 3]
 [9 7 7 1]
 [1 3 2 2]]
[[5 5 4 7]
 [2 5 1 3]
 [9 7 7 1]
 [1 3 2 2]]
[[5 5 4 7]
 [2 5 1 3]
 [9 7 7 1]
 [1 3 2 2]]
[[5 5 4 7]
 [2 5 1 3]
 [9 7 7 1]
 [1 3 2 2]]
[[5 5 4 7]
 [2 5 1 3]
 [9 7 7 1]
 [1 3 2 2]]

【讨论】:

  • 感谢您的回答。对不起这个愚蠢的问题。这就是睡眠剥夺的作用。
  • 很高兴我能提供帮助。如果有帮助,请考虑支持我的回答。
猜你喜欢
  • 1970-01-01
  • 2020-12-20
  • 2013-12-10
  • 1970-01-01
  • 1970-01-01
  • 2021-03-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多