在我的程序中,我需要运行N个单独的线程,每个线程都有自己的RNG,该RNG用于采样大型数据集。我需要能够使用单个值为整个过程设定种子,以便能够重现结果。
仅按顺序增加每个索引的种子就足够了吗?
目前,我使用numpy
的是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)。我不知道这是个好习惯还是有更好的方法来做到这一点。