En mi programa necesito ejecutar N hilos 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 único valor para poder reproducir los resultados.
¿Es suficiente con aumentar secuencialmente la semilla de cada índice?
Actualmente utilizo numpy
's RandomState
que utiliza un generador de números pseudoaleatorios 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)
Esencialmente comienzo con una semilla introducida por el usuario (si existe) y para cada instancia / hilo añado secuencialmente el índice (0 a N-1) de la instancia que se está ejecutando. No sé si esto es una buena práctica o si hay una mejor manera de hacer esto.
1 votos
¿Sabes de antemano cuántos valores pseudoaleatorios utilizará cada hilo, o al menos puedes obtener una buena estimación del límite superior?
0 votos
No, no puedo. Muestrea regiones que se suman hasta que un umbral es él. El tamaño de las regiones puede variar considerablemente.