Как можно сериализовать mersenne_twister_engine с помощью Boost?

У меня есть класс, который реализует std::mt19937, и я хотел бы иметь возможность сохранять и загружать состояние генератора случайных чисел для согласованности. Я знаю, что операторы ‹‹ и >> можно использовать для сохранения/загрузки состояния движка и что я могу разделить функции сохранения и загрузки при архивировании файла, если это необходимо. Мое предположение о том, как это сделать, состоит в том, чтобы использовать операторы ‹‹ и >> для сохранения состояния в/извлечения состояния из объекта, который может быть сериализован. Мои вопросы

  1. Какой объект можно использовать для хранения состояния mersenne_twister_engine, которое также можно сериализовать с помощью Boost?
  2. Является ли мой подход безопасным и считается ли он хорошей практикой?
  3. Есть ли подход к этому, который обычно считается лучшим?

person Austin    schedule 01.06.2020    source источник


Ответы (1)


Из этой ссылки на оператор вывода/ввода относительно оператора вывода:

Сериализирует внутреннее состояние механизма псевдослучайных чисел e как последовательность десятичных чисел, разделенных одним или несколькими пробелами, и вставляет ее в поток ost.

Поток может быть любым выходным потоком, например поток выходной строки. . Затем вы можете использовать строку, созданную строковыми потоками, и передать ее в любую необходимую вам структуру сериализации.

Или, если инфраструктура сериализации поддерживает прямые операции потока вывода/ввода, вы можете использовать ее напрямую с операторами движка.

person Some programmer dude    schedule 01.06.2020