PiC*_*bed 7 python random numpy
所以我试图生成一个具有所需概率的数字列表;问题是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)
Run Code Online (Sandbox Code Playgroud)
如果有效的话,所需的输出应该是相同的random.seed(),但每次运行时输出都不同。有谁知道是否有一个函数可以完成类似的seed()工作np.random.choice()?
numpy使用自己的伪随机生成器。np.random.seed(\xe2\x80\xa6)您可以使用\xc2\xa0 [numpy-doc]为 Numpy 随机生成器播种:
np.random.seed(2020)Run Code Online (Sandbox Code Playgroud)\n例如:
\n>>> np.random.seed(2020)\n>>> np.random.choice(np.arange(0, 4), p=[0.44, 0.21, 0.23, 0.12])\n3\n>>> np.random.seed(2020)\n>>> np.random.choice(np.arange(0, 4), p=[0.44, 0.21, 0.23, 0.12])\n3\n>>> np.random.seed(2020)\n>>> np.random.choice(np.arange(0, 4), p=[0.44, 0.21, 0.23, 0.12])\n3\n>>> np.random.choice(np.arange(0, 4), p=[0.44, 0.21, 0.23, 0.12])\n2\nRun Code Online (Sandbox Code Playgroud)\n正如你所看到的,我们每次都会选择3,而如果我们不为随机生成器播种,2则下一个项目是3。
您不小心设置了random.random.seed()而不是numpy.random.seed().
代替
random.seed(2020)
Run Code Online (Sandbox Code Playgroud)
使用
import numpy as np
np.random.seed(2020)
Run Code Online (Sandbox Code Playgroud)
并且您的结果将始终是可重复的。