在我的程序中,我需要运行 N 个单独的线程,每个线程都有自己的 RNG,用于对大型数据集进行采样。我需要能够用一个单一的值来播种整个过程,这样我才能重现结果。
简单地依次增加每个索引的种子就足够了吗?
目前我使用numpy
's RandomState
,它使用 Mersenne Twister 伪随机数生成器。
下面的代码片段:
# If a random number generator seed exists
if self.random_generator_seed:
# Create a new random number generator for this instance based on its
# own index
self.random_generator_seed += instance_index
self.random_number_generator = RandomState(self.random_generator_seed)
本质上,我从用户输入的种子(如果存在)开始,对于每个实例/线程,我依次添加正在运行的实例的索引(0 到 N-1)。我不知道这是否是好的做法,或者是否有更好的方法来做到这一点。