[英]How do I set a random seed, randomly?
我正在運行一個依賴於隨機性的大規模並行化進程。 問題是並行進程中的每個工作進程與父進程共享相同的隨機種子,從而破壞了我運行不同隨機模擬的嘗試。
因此,我遇到了如何在開始時為每個工人設置不同的隨機種子的問題。 我目前的解決方案是將time.time()
的微秒部分random.seed()
並將其轉換為整數,然后再將其傳遞給random.seed()
。 它看起來像下面這樣。 有沒有更好的辦法?
import re
import random
import time
def set_random_seed():
seed = int(re.sub(r'[^0-9]', '', str(time.time())[-7:]))
random.seed(seed)
請參閱: https : //docs.python.org/3/library/random.html#random.seed
如果省略種子,將使用os.urandom - 如果可用。 你可以打電話:
random.seed()
如果您擔心os.urandom
不太可能的情況不可用,請在您的主進程中生成唯一的種子並將一個傳遞給您啟動的每個進程。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.