num= 100
obs=[]
np.random.seed(1)
for i in range(num):
N=[]
CF3_1=[]
CF3_2=[]
i=2
salvage= np.random.triangular(salvage_min, salvage_mode, salvage_max)
inv= np.random.uniform(inv_min, inv_max)
for y in range(0,5):
gt= 14.747101 11.664259 * np.random.beta(0.645868, 0.920589)
print(gt)
我試圖讓 gt 以 np.random.seed(1) 開頭,但似乎 gt 不以種子 1 開頭。
np.random.seed(1)
gt= 14.747101 11.664259 * np.random.beta(0.645868, 0.920589)
print(gt)
產生以下結果:
17.889105013452703
14.747134750650536
19.474766202077234
16.967191836499126
18.465043981244925
18.03420202040634
15.794033025059752
而我的代碼的結果是:
14.747134750650536
19.474766202077234
16.967191836499126
18.465043981244925
18.03420202040634
請注意,我的代碼的結果完全相同,只是它跳過了 17.889105013452703。
uj5u.com熱心網友回復:
這是可以預料的。 np.random.triangular每個消耗np.random.uniform一個隨機雙精度數(64 位),同時np.random.beta消耗兩個雙精度數;見源。
因此,在您重置種子后,呼叫np.random.triangularand np.random.uniformonce 每個將消耗兩個雙精度值,這意??味著連續np.random.beta呼叫回傳的值將比沒有這兩個先前呼叫時回傳的值落后一個值。
如果您希望您的gt序列開始,np.random.seed(1)那么您應該np.random.seed(1)在呼叫其他消耗隨機值的函式之后呼叫(即,在內部for回圈之前)。
如果您想生成隨機值(即np.random.triangular,np.random.uniform由于 不可重復np.random.seed(1)),您應該創建一個單獨的隨機生成器來使用它們。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/526389.html
標籤:Python麻木的
