Python seed函式到底有什麼用?

時間 2021-06-05 03:27:15

1樓:coder

沒有看書,憑藉記憶來隨便答一下。答錯了就當開闊思路好了。

random 是怎樣實現隨機數的?

我憑藉記憶來猜測一下random的實現,在指定好隨機範圍和隨機數種子(seed)的情況下,生成的隨機數序列應該是一樣的。也就是說,你先呼叫一次random.seed(1),然後呼叫 10 次random.

randint(1, 9)。得到乙個數字序列 A。然後你重新設定隨機數種子為 1,random.

seed(1),然後再呼叫10次,random.randint(1, 9),又生成乙個數字序列 B,不出意外的話,序列A和序列B的結果應該是一樣的。

import random

random.seed(1)

print('數字序列A', end=' ')

for i in range(9):

print(random.randint(1, 9), end=' ')

# 重新設定隨機數種子為 1

random.seed(1)

print('數字序列B', end=' ')

for i in range(9):

print(random.randint(1, 9), end=' ')

# 數字序列A 3 2 5 2 8 8 8 7 4 數字序列B 3 2 5 2 8 8 8 7 4

那這樣還算生成隨機數嗎?它在我的電腦上是這個結果, 在你的電腦上可能也是乙個確定的結果. 在設定好隨機數種子以後,使用 random 工具生成每乙個數其實都是已經確定好的。

於是,人們通常在產生一次隨機數後就重新設定一次隨機數種子,這樣就能保證生成的隨機數不會依照之前的那個確定的數字序列了, 當然它還是乙個確定的數字序列. 如果你設定隨機數種子為 2, 那它生成隨機數時就按照隨機數種子為 2 時對應的那個隨機數序列來生成隨機數. 如果你設定隨機數種子為 3, 那它生成隨機數時就按照隨機數種子為 3 時對應的那個隨機數序列來生成隨機數.

但是如果你每次生成隨機數時都指定隨機數種子為 2 或者 3,那麼生成的隨機數就又冥冥之中被確定了?

因此, 人們常用 time.time() 來當做隨機數種子, 來代替前文的隨機數種子1 2 3。time.time() 返回乙個浮點數, 代表當前的時間, 用法如下:

import time

import random

random.seed(time.time())

print('數字序列A', end=' ')

for i in range(9):

print(random.randint(1, 9), end=' ')

# 重新設定隨機數種子

random.seed(time.time())

print('數字序列B', end=' ')

for i in range(9):

print(random.randint(1, 9), end=' ')

這樣, 我每次點執行時的時間肯定不一樣, 相應的每次設定的隨機數種子就不一樣, 對應的隨機數序列就不一樣. 當然每個隨機數種子代表的隨機數序列還是確定的, 並沒有隨機. 因此人們把 random 生成的隨機數稱為 "偽隨機數".

這並不是說在大資料量地呼叫 random 產生隨機數的情況下, 它生成指定範圍內的隨機數序列中每個數字出現的概率不相等, 而是想要描述前文中描述的現象.

復合函式到底怎麼求導?

秋刀魚 首先得知道基本初等函式求導公式,其次需要知道復合函式求導法則,也就是f u x f x u x 然而對於複雜的復合函式可以採用對數求導法則 玖攸 復合函式求導,無非就是找出構成復合函式的子函式,當然乙個復合函式可以拆分成無數種子函式 比如這道題,可以化為f u u x,g u 2 5x 當然...

當伴郎的次數到底有什麼禁忌?

大成唯愛婚禮 1 伴郎的舉止和談吐一定要大方 得體,伴郎的形象就是代表新郎。伴郎的作用不僅僅是儀式的需要,還需要幫助新郎應付客人。2 伴郎的長相要標誌。長相不要求多麼英俊帥氣,但一定要Sunny正直,和伴娘們相配最好,但不能喧賓奪主。俗話說 可以帥,但不能帥過新郎。3 伴郎的身高最好和伴娘相撘是最好...

殘差網路ResNet訓練時的目標函式到底是什麼?

李御心 目標函式跟網路是分開的兩個部分。目標函式,是為了達成目標,給網路乙個feedback,讓它學習。網路是達成目標的 魔法 只要知道了最後一層目標函式的導數,扔給網路學就可以了。很多時候我們都認為網路是乙個feature extractor backbone 跟問題本身沒有太大關係。ResNet...