首页 > 解决方案 > 如何使用 Boost 序列化 mersenne_twister_engine?

问题描述

我有一个实现 std::mt19937 的类,我希望能够保存和加载随机数生成器的状态以保持一致性。我知道 << 和 >> 运算符可用于保存/加载引擎的状态,并且如果需要,我可以在归档文件时将保存和加载功能分开。我对如何做到这一点的猜测是使用 << 和 >> 运算符将状态存储到可以序列化的对象中/从对象中提取状态。我的问题是

  1. 什么对象可以用来存储也可以使用 Boost 序列化的 mersenne_twister_engine 的状态?
  2. 我的方法是否安全并且通常被认为是良好的做法?
  3. 有没有一种通常被认为更好的方法?

标签: c++serializationrandomboostmersenne-twister

解决方案


从此输出/输入运算符参考关于输出运算符:

将伪随机数引擎 e 的内部状态序列化为由一个或多个空格分隔的十进制数序列,并将其插入到流中ost

流可以是任何类型的输出流,例如输出字符串流。然后,您可以使用字符串流创建的字符串并将其传递给您需要的任何序列化框架。

或者,如果序列化框架支持直接输出/输入流操作,您可以直接将其与引擎操作符一起使用。


推荐阅读