gpt4 book ai didi

c++ - 写入和读取随机数状态到文件

转载 作者:行者123 更新时间:2023-11-30 05:30:23 26 4
gpt4 key购买 nike

我正在尝试按如下方式保存随机数生成器的状态:

std::mt19937 rng
std::ofstream ofile("RngState.txt");
ofile << rng;
ofile.close();

我观察到状态是一个包含 1248 个数字的 vector ,文件中只写入了 624 个数字。有没有一种方法可以一次写入和读取所有 1248 个数字(我想我正在尝试增加 ofstream 的容量/大小)。

提前致谢。

最佳答案

正如@knivil 所说,状态只能用 624 个数字表示。请告诉我们您是如何观察到 1248 的?

VS 2015

编辑:

我与这段代码的结果一致,你能运行它并检查一下吗?

#include <fstream>
#include <random>
#include <iostream>

std::mt19937 deser(std::string fname)
{
std::ifstream f{fname, std::ifstream::binary};
std::mt19937 res;
f >> res;
return res;
}
void ser(std::string fname, std::mt19937 rng)
{
std::ofstream f(fname, std::ofstream::binary);
f << rng;
}

void printRand(std::mt19937 rng)
{
std::uniform_int_distribution<> uid{1, 100};
std::cout << uid(rng) << std::endl;
}

int main()
{
auto fname{"R:\\RngState.txt"};

std::mt19937 rng{std::random_device{}()};
ser(fname, rng);
printRand(rng);

rng = deser(fname);
printRand(rng);

return 0;
}

关于c++ - 写入和读取随机数状态到文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35991714/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com