我需要一个“足够好”的 C++11 随机数生成器,我可以在其中保存和恢复状态。我希望保存的状态明显小于此代码生成的 6.6kb 左右
std::mt19937 rng (1);
std::ofstream save ("save.txt");
save << rng;
std::mersenne_twister_engine有大量参数。这有点吓人。
就我的目的而言,数十亿的时间就足够了。我听说过 TinyMT,这可能是合适的,但看不到如何将其实现为模板专业化。
我应该如何选择参数?我怀疑如果我只是将“状态大小”参数减少到几个词,它会严重崩溃。
我会考虑完全使用不同的引擎,但除了容忍适度的时期外,我不想牺牲统计随机性的质量。像下面这样的人工制品(对于线性同余)是不可接受的。