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



我正在编写一个代码,该代码要求从为不同任务给定的几个随机数中统一生成随机数。例如:

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:我在蟒蛇上-3.8.2

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

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

对于多个线程,有独立的随机生成器是有意义的,因为使用同一个随机生成器会由于并发性而使进程不可复制。

最新更新