c++ - 如何使用 Boost 序列化 mersenne_twister_engine?
问题描述
我有一个实现 std::mt19937 的类,我希望能够保存和加载随机数生成器的状态以保持一致性。我知道 << 和 >> 运算符可用于保存/加载引擎的状态,并且如果需要,我可以在归档文件时将保存和加载功能分开。我对如何做到这一点的猜测是使用 << 和 >> 运算符将状态存储到可以序列化的对象中/从对象中提取状态。我的问题是
- 什么对象可以用来存储也可以使用 Boost 序列化的 mersenne_twister_engine 的状态?
- 我的方法是否安全并且通常被认为是良好的做法?
- 有没有一种通常被认为更好的方法?
解决方案
从此输出/输入运算符参考关于输出运算符:
将伪随机数引擎 e 的内部状态序列化为由一个或多个空格分隔的十进制数序列,并将其插入到流中
ost
。
流可以是任何类型的输出流,例如输出字符串流。然后,您可以使用字符串流创建的字符串并将其传递给您需要的任何序列化框架。
或者,如果序列化框架支持直接输出/输入流操作,您可以直接将其与引擎操作符一起使用。
推荐阅读
- css - 如何保持带底框的垂直滚动
- sql - 如何正确编写我的 clickhouse sql 查询?
- ios - 带有图标和数字的按钮,可以在 iOS 中进行计数
- javascript - Javascript:使用第二个数组中的值提取数组中的密钥对值
- python - 将现有标签附加到汤会导致尖括号变成 HTML 实体
- javascript - 如何防止在反应代码中添加空任务?
- python - ImportError:无法导入名称“MapWrapper”
- c++ - 为什么在 asio 的示例中,tcp 接受器模式使用 shared_pointer 模型包装堆套接字,而 udp 使用堆栈套接字?
- javascript - 将 vue-qrcode 编译成 razorlight 和 dinktopdf
- php - 分块显示大数据 - PHP