[英]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
而如果我们不为随机生成器播种,则2
是3
之后的下一个项目。
您不小心设置了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.