2017-05-11 220 views
2

有什麼辦法可以在Python代碼中使用兩個不同的種子來生成numpy隨機數生成器,一個用於部分代碼,另一個用於代碼的其餘部分?Python多個隨機種子

+0

a = np.random.mtrand.RandomState(1).randint(0,10,size =(5,2))... b = np.random.mtrand.RandomState(2).randint(0 ,10,size =(5,2))...試一試 – NaN

回答

6

您可以使用多種不同的np.random.RandomState S和調用這些方法:

import numpy as np 

rng1 = np.random.RandomState(100) 
rng2 = np.random.RandomState(100) 

print(rng1.randint(0, 100, 1)) # [8] 
print(rng2.randint(0, 100, 1)) # [8] 

我用兩個相同的種子(100),因爲它表明,無論給出了相同的結果。

+0

如果隨機狀態發生變化,我的早期評論會產生不同但可重現的結果,這可能會很有趣。此外,還可以在numpy的幫助主題中介紹可以訪問的發行版。 – NaN

+0

@NNN不知道我是否可以關注。在調用'randint'或者手動改變狀態的種子之後,你的意思是不同的種子或狀態嗎? – MSeifert

+0

是的,你使用了相同的種子,我的例子使用了不同的種子,都產生了可重現的結果,在你的情況下,對於這兩種情況,在我的情況下,a和b有不同的值,但它們的值不會改變。加上randint只是一種分配方式,其他的則很有用(正常,統一等) – NaN