如何随机设置随机种子?

How do I set a random seed, randomly?

我正在 运行ning 一个依赖于随机性的大规模并行化进程。问题在于并行进程中的每个工作进程都与父进程共享相同的随机种子,从而破坏了我对 运行 不同随机模拟的尝试。

因此,我遇到了如何在开始时为每个工人设置不同的随机种子的问题。我当前的解决方案是从 time.time() 中取出微秒部分并将其转换为整数,然后再将其传递给 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 不太可能出现不可用的情况,请在您的主进程中生成唯一的种子,并将一个种子传递给您启动的每个进程。