W moim programie muszę uruchomić N osobnych wątków, każdy z własnym RNG, który służy do próbkowania dużego zestawu danych. Muszę być w stanie zaszczepić cały ten proces jedną wartością, aby móc odtwarzać wyniki.
Czy wystarczy po prostu sekwencyjnie zwiększać ziarno dla każdego indeksu?
Obecnie używam numpy
tych, RandomState
które korzystają z generatora liczb pseudolosowych Mersenne Twister.
Fragment kodu poniżej:
# 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)
Zasadniczo zaczynam od zarodka wprowadzonego przez użytkownika (jeśli istnieje) i dla każdej instancji / wątku kolejno dodaję indeks (od 0 do N-1) uruchomionej instancji. Nie wiem, czy to dobra praktyka, czy może jest na to lepszy sposób.