Dans mon programme, je dois exécuter N threads séparés chacun avec leur propre RNG qui est utilisé pour échantillonner un grand ensemble de données. J'ai besoin de pouvoir semer tout ce processus avec une seule valeur afin de pouvoir reproduire les résultats.
Suffit-il d'augmenter simplement séquentiellement le germe pour chaque indice?
Actuellement , j'utilise numpy
« s RandomState
qui utilise un générateur de nombres pseudo-aléatoires Mersenne Twister.
Extrait de code ci-dessous:
# 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)
Essentiellement, je commence par une graine entrée par l'utilisateur (si elle existe) et pour chaque instance / thread, j'ajoute séquentiellement l'index (0 à N-1) de l'instance en cours d'exécution. Je ne sais pas s'il s'agit d'une bonne pratique ou s'il existe une meilleure façon de procéder.