2017-09-27 137 views
1

對於Python 3,我可以在互聯網上找到許多不同的地方,說明random模塊的默認種子是基於系統時間的。隨機:什麼是默認種子?

Python 2.7的情況也是這樣嗎?我想是的,因爲如果我啓動兩個不同的Python進程,並且在兩者中都執行import random; random.random(),那麼這兩個不同的進程會返回不同的結果。

如果確實使用系統時間,那麼使用的實際種子是什麼? (例如,「自午夜以來的秒數」或「自UNIX時代以來的微秒數」,或者......) 如果不是,用於播種PRNG的是什麼?

回答

1

這是關於如何爲Random對象生成默認種子的源代碼。

try: 
    # Seed with enough bytes to span the 19937 bit 
    # state space for the Mersenne Twister 
    a = long(_hexlify(_urandom(2500)), 16) 
except NotImplementedError: 
    import time 
    a = long(time.time() * 256) # use fractional seconds 

urandom等於os.urandom。有關urandom的更多信息,請檢查此page