繁体   English   中英

random.seed() 不适用于 random.choice()

[英]random.seed() does not work with random.choice()

所以我正在尝试生成具有所需概率的数字列表; 问题是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()工作,所需的 output 应该是相同的,但 output 每次运行时都不同。 有谁知道是否有 function 为random.choice()做类似的seed()工作?

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

np.random.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之后的下一个项目。

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


代替

random.seed(2020)

利用

import numpy as np 


np.random.seed(2020)

并且您的结果将始终是可重复的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM