我想使用亂數生成資料,然后使用生成的資料生成帶有替換的隨機樣本。問題是,使用random.seed(10)只修復生成資料的初始亂數,但它不修復回圈內生成的隨機樣本,每次我運行代碼時,我都會得到相同的生成資料但不同的隨機樣本,我想得到相同的隨機樣本以獲得可重復的結果。代碼如下:
import numpy as np
import random
np.random.seed(10)
data = list(np.random.binomial(size = 215 , n=1, p= 0.3))
sample_mean = []
for i in range(1000):
sample = random.choices(data, k=215)
mean = np.mean(sample)
sample_mean.append(mean)
print(np.mean(sample_mean))
np.mean(sample_mean)每次運行代碼時都應該檢索相同的值,但它不會發生。
我嘗試在回圈內輸入 random.seed(i) 但它不起作用。
uj5u.com熱心網友回復:
你random.choices(data, k=215)來自 python 內置random庫,它的種子與里面的不同numpy.random,所以播種 numpy 是不夠的。
正確的解決方案是在這里使用 numpy np.random.choice,因為您已經在使用 numpy。
import numpy as np
np.random.seed(10)
data = np.random.binomial(size=215, n=1, p=0.3)
sample_mean = []
for i in range(1000):
sample = np.random.choice(data,size=215)
mean = np.mean(sample)
sample_mean.append(mean)
print(np.mean(sample_mean))
ps:呼叫不是必需的,并且會減慢您的代碼速度list。data
uj5u.com熱心網友回復:
修復種子np.random并不能修復種子random......
因此添加一條簡單的線來修復兩個種子將為您提供可重復的結果:
import numpy as np
import random
np.random.seed(10)
random.seed(10)
data = list(np.random.binomial(size=215, n=1, p=0.3))
sample_mean = []
for i in range(1000):
sample = random.choices(data, k=215)
mean = np.mean(sample)
sample_mean.append(mean)
print(np.mean(sample_mean))
或者,您也可以使用np.random.choices代替random.choices.
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/525177.html
上一篇:回圈列印以x開頭的字串串列
下一篇:如何在結束檔案上停止宏?
