Пуленепробиваемое заполнение случайных генераторов для обеспечения воспроизводимости вычислений в Python

Мое намерение состоит в том, чтобы создать руководство о том, как выполнять воспроизводимые вычисления в Python (если это возможно, независимо от среды, операционной системы и т. Д.). Однако проблема генерации случайных чисел продолжает вспоминаться. Я изо всех сил пытаюсь найти пуленепробиваемый способ (если есть один).

Стандартный способ сделать вывод случайных генераторов воспроизводимым - это использовать

import random
random.seed()

Насколько я знаю, автоматический выбор семян зависит от системы. (См. Документацию random.seed в Python.)

Поэтому лучше использовать конкретное число для заполнения генератора.

import random
random.seed(0)

Тем не менее, есть библиотеки, которые не используют встроенные случайные, а используют numpy.random, Поэтому вам также нужно посеять numpyГенератор.

import numpy
numpy.random.seed(0)

Встроенный random работает как синглтон, и я полагаю, numpy.random работает так же. Это означает, что вы устанавливаете семя один раз, а затем оно используется везде.

Я хотел бы создать фрагмент кода, который вы могли бы использовать в начале своего кода и который обеспечил бы вычислительную воспроизводимость в терминах случайных генераторов.

Есть ли лучший способ объединить оба генератора и установить оба начальных числа и, возможно, даже сохранить воспроизводимость в разных операционных системах? А вы знакомы с какими-либо широко используемыми генераторами псевдослучайных чисел, которые должны быть добавлены к встроенным генераторам случайных чисел и к множеству случайных генераторов, чтобы сделать фрагмент как можно более общим?

0 ответов

Другие вопросы по тегам