在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/數(shù)據(jù)分析&挖掘  Python/ 為什么rand.randn一直返回一樣的結(jié)果?

為什么rand.randn一直返回一樣的結(jié)果?

定義了一個(gè)函數(shù),代碼如下:

def make_data(N, f=0.3, rseed=1): 
    rand = np.random.RandomState(rseed) 
    x = rand.randn(N)
    return x 

調(diào)用的時(shí)候發(fā)現(xiàn)這個(gè)函數(shù)一直返回同樣的結(jié)果,對(duì)這個(gè)有一點(diǎn)不理解。

x = make_data(10)
y = make_data(10)
x == y

返回值為

array([ True,  True,  True,  True,  True, True,  True,  True,  True,  True])

自己看了一下,問題應(yīng)該出在rand=np.random.RandomState(rseed),因?yàn)槿绻褂孟旅娲a:

x = np.random.RandomState(5).randn(5)
y = np.random.RandomState(5).randn(5)
x == y

結(jié)果還是一樣,但是奇怪的是,如果用下面這個(gè)代碼:

rand = np.random.RandomState(5)
x = rand.randn(5)
y = rand.randn(5)
x == y

xy的返回值不一樣。
請(qǐng)問這是怎么回事?

回答
編輯回答
別硬撐

numpy 的 random 機(jī)制和 Python 標(biāo)準(zhǔn)庫的 random 模塊機(jī)制是一樣的,當(dāng)我們?cè)O(shè)置相同的 seed,每次生成的隨機(jī)數(shù)相同。
如果不設(shè)置 seed,則每次會(huì)生成不同的隨機(jī)數(shù)。
這里引用 stackoverflow 上的最高票解答

>>> numpy.random.seed(0) ; numpy.random.rand(4)
array([ 0.55,  0.72,  0.6 ,  0.54])
>>> numpy.random.seed(0) ; numpy.random.rand(4)
array([ 0.55,  0.72,  0.6 ,  0.54])
2018年6月29日 05:42