У моїй програмі мені потрібно запустити N окремих потоків, кожен з яких має власний RNG, який використовується для вибірки великого набору даних. Мені потрібно мати можливість зафіксувати весь цей процес одним значенням, щоб я міг відтворити результати.
Чи достатньо просто послідовно збільшувати насіння для кожного показника?
В даний час я використовую numpy
's, RandomState
який використовує генератор псевдовипадкових чисел Mersenne Twister.
Фрагмент коду нижче:
# 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)
По суті я починаю з введеного користувачем насіння (якщо воно існує), і для кожного примірника / потоку послідовно додаю індекс (від 0 до N-1) запущеного екземпляра. Я не знаю, чи це хороша практика, чи є кращий спосіб зробити це.