En mi programa, necesito ejecutar N subprocesos separados, cada uno con su propio RNG, que se utiliza para muestrear un gran conjunto de datos. Necesito poder sembrar todo este proceso con un solo valor para poder reproducir los resultados.
¿Es suficiente simplemente aumentar secuencialmente la semilla para cada índice?
Actualmente uso numpy
's RandomState
que usa un generador de números pseudoaleatorio Mersenne Twister.
Fragmento de código a continuación:
# 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)
Básicamente, comienzo con una semilla introducida por el usuario (si existe) y para cada instancia / hilo agrego secuencialmente el índice (0 a N-1) de la instancia en ejecución. No sé si esta es una buena práctica o si hay una mejor manera de hacerlo.