我正在研究包含随机初始状态的算法.因此,每次运行时,此算法的输出都不稳健.这会给我带来很多麻烦,因为我收到错误的输出并想调试它以查看问题所在,因为当我再次运行它时,由于算法的随机因素,问题可能无法重新生成.我正在使用C++随机生成器如下:
std::random_device rd; std::mt19937 rnd_generator(rd()); std::uniform_int_distribution<> rnd_distribution(0, data_size - 1); auto get_random_index = [&](){ return rnd_distribution(rnd_generator); };
我怎么能模仿这个函数生成的最后一个随机序列?例如,我可以给它一些静态种子,我可以重新输入它并获得完全相同的随机序列吗?我问,因为我认为这是常见的问题所以可能有一些好的和有效的知名方式.
保存调用结果rd()
并使用它来初始化rnd_generator
下一遍
例:
#include#include auto main() -> int { using namespace std; random_device rd; auto seed = rd(); for (int pass = 0 ; pass < 3 ; ++pass) { mt19937 rnd_generator(seed); uniform_int_distribution<> rnd_distribution(0, 9); for (int i = 0 ; i < 5 ; ++i) { cout << rnd_distribution(rnd_generator) << ", "; } cout << endl; } return 0; }
示例输出:
9, 5, 3, 5, 4, 9, 5, 3, 5, 4, 9, 5, 3, 5, 4,