我应该创建多少个随机生成器

时间:2020-09-23 13:18:18

标签: python random

我正在编写一个代码,该代码需要从为不同任务提供的多个给定值中统一生成随机数。例如,请考虑:

p = [0,1,2,3]
wt = [0.1,0.7,0.2,0.5]
random.seed = inputseed
random.choices(population=p, weights=wt)

所有任务的种子都是固定的。

我是否需要为每个任务创建单独的随机发生器,以使这些任务的样本均匀地独立于其他任务?像这样:

rgen = random.Random(inputseed)
rgen.choices(population=p, weights=wt)

在将random用于多个逻辑任务以及在多线程环境中使用时,是否还有其他考虑?

PS:我使用的是python-3.8.2

1 个答案:

答案 0 :(得分:1)

随机采样的分布不取决于种子-因此,一个随机生成器就足够了。此外,如果您将创建许多随机生成器并调用相同的采样函数(例如选择),则会产生相同的一系列结果。

import random

numbers = list(range(100))
seed = 42
r = random.Random(seed)
a = r.choices(numbers, k=10)

r = random.Random(seed)
b = r.choices(numbers, k=10)

assert a == b

有多个线程,拥有独立的随机数生成器是有意义的-因为使用同一个随机数生成器,由于并发性会使进程不可重现。