2012-10-02 53 views
4

我知道如何設置隨機種子在python有沒有辦法讀回Python中的隨機種子?

random.seed([x])

種子一旦被設置,有沒有辦法讀回,並找出什麼樣的價值傳遞給種子()函數?

+1

1.根據文檔python使用系統時間作爲種子,如果沒有參數給出。 2.作爲解決方法,您可以使用getstate和setstate – zenpoy

回答

4

雖然Python的Random(Mersenne Twister)的底層算法是確定性的,但種子並不存儲在實現內存空間的任何位置。如有必要,由調用者來存儲種子。

http://docs.python.org/library/random.html#module-random

有關Python實現的更多信息(或用自己的種子儲存隨機類覆蓋它)看到:

http://hg.python.org/cpython/file/0b650272f58f/Lib/random.py

http://hg.python.org/cpython/file/0b650272f58f/Python/random.c

+0

感謝您確認它沒有存儲。我會將它存儲在某個地方。 – Plazgoth

3

有是無法取回種子本身。種子用於更新隨機數發生器的內部狀態,並不直接存儲在任何地方。

但是,有一種方法可以保存當前狀態!隨機模塊基於Mersenne Twister僞隨機數生成器,它在C中實現(使用_random擴展模塊)。你可以這樣做:

import random 
r = random.Random() 
# Use the r object to generate numbers 
# ... 
curstate = r.__getstate__() 
# Use it even more.. 
# 
r.__setstate__(curstate) # Go back to previous state 

換句話說,random.Random()對象可以醃製,也可以使用酸洗對象(或直接在__getstate__/__setstate__方法)返回到以前的狀態。

相關問題