Разделите состояние генератора случайных чисел между NumPy и GSL

Я переписываю модуль Python на С++, используя Boost Python. Модуль Python выбирает числа из различных случайных распределений, используя numpy.random. Для версии C++ я использую GSL.

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

Однако из этот вопрос, кажется, что просто установить семя недостаточно, случайное состояние также должно быть установлено совместно.

Возможно ли это сделать между этими двумя библиотеками?


person user5697101    schedule 09.02.2019    source источник
comment
Если вы можете получить состояние из GSL, вы можете установить его в numpy с помощью это.   -  person Reti43    schedule 09.02.2019
comment
Полагается ли ваш модуль Python на воспроизводимую случайность? То есть соответствует ли ваш модуль Python критериям, которые я привожу в Когда использовать заполненный PRNG?   -  person Peter O.    schedule 09.02.2019
comment
Смысл ответа, который вы связали, заключается в том, что для того же алгоритма PRNG, но другого алгоритма заполнения, начальное значение на самом деле не имеет отношения к совместному использованию, а только к состоянию. См. это концептуальное объяснение. Похоже, что Python и GSL используют разные f() в этой нотации.   -  person pjs    schedule 09.02.2019
comment
@ПитерО. Приложение представляет собой поиск по дереву Монте-Карло. Я пытаюсь воспроизвести один и тот же результат как в модуле Python, так и в модуле C++, поэтому да, я считаю, что он соответствует установленным критериям.   -  person user5697101    schedule 09.02.2019
comment
@pjs Означает ли это, что требуется получить внутреннее состояние_0 из GSL и установить его в качестве начального состояния генератора numpy?   -  person user5697101    schedule 09.02.2019
comment
Неважно, в какую сторону она пойдет, но да, это означает, что две Вихри Мерсенна должны стартовать из одного и того же состояния. Это не то же самое, что начинать с одного и того же семени, если они используют разные алгоритмы заполнения.   -  person pjs    schedule 10.02.2019