簡體   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