No meu programa, eu preciso executar N threads separados, cada um com seu próprio RNG, que é usado para provar um grande conjunto de dados. Eu preciso ser capaz de propagar todo esse processo com um único valor para poder reproduzir resultados.
É suficiente simplesmente aumentar sequencialmente a semente para cada índice?
Atualmente eu uso numpy
o RandomState
que usa um gerador de números pseudo-aleatórios Mersenne Twister.
Trecho de código abaixo:
# 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)
Basicamente, começo com uma semente inserida pelo usuário (se existir) e, para cada instância / thread, adiciono sequencialmente o índice (0 a N-1) da instância em execução. Não sei se isso é uma boa prática ou se existe uma maneira melhor de fazer isso.