【问题标题】:random.seed() does not work with random.choice()random.seed() 不适用于 random.choice()
【发布时间】:2020-04-16 18:05:04
【问题描述】:

所以我正在尝试生成具有所需概率的数字列表;问题是random.seed() 在这种情况下不起作用。

M_NumDependent = []

for i in range(61729):
    random.seed(2020)
    n = np.random.choice(np.arange(0, 4), p=[0.44, 0.21, 0.23, 0.12])
    M_NumDependent.append(n)
print(M_NumDependent)

如果random.seed() 有效,则所需的输出应该相同,但每次运行时输出都不同。有谁知道seed()对于random.choice()是否有类似的工作?

【问题讨论】:

    标签: python numpy random


    【解决方案1】:

    您不小心设置了random.random.seed() 而不是numpy.random.seed()


    代替

    random.seed(2020)
    

    使用

    import numpy as np 
    
    
    np.random.seed(2020)
    

    您的结果将始终可重现。

    【讨论】:

      【解决方案2】:

      numpy 使用自己的伪随机生成器。您可以使用 np.random.seed(..) [numpy-doc] 播种 Numpy 随机生成器:

      <b>np.random</b>.seed(2020)

      例如:

      >>> np.random.seed(2020)
      >>> np.random.choice(np.arange(0, 4), p=[0.44, 0.21, 0.23, 0.12])
      3
      >>> np.random.seed(2020)
      >>> np.random.choice(np.arange(0, 4), p=[0.44, 0.21, 0.23, 0.12])
      3
      >>> np.random.seed(2020)
      >>> np.random.choice(np.arange(0, 4), p=[0.44, 0.21, 0.23, 0.12])
      3
      >>> np.random.choice(np.arange(0, 4), p=[0.44, 0.21, 0.23, 0.12])
      2
      

      如您所见,我们每次都选择3,而如果我们为随机生成器播种,23 之后的下一个项目。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-11-24
        • 2014-05-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-06-04
        相关资源
        最近更新 更多