我正在使用boost :: random :: mt19937生成器,我需要打印它的种子用于调试目的(为了重现我的测试) 我怎样才能获得种子?
答案 0 :(得分:1)
使用C ++ 11功能。
std::random_device rd;
unsigned long seed = rd();
std::cout << "seed = " << seed << std::endl;
std::mt19937 engine(seed);
答案 1 :(得分:0)
不是试图从mt19937中提取您认为的种子,而是在两次运行中明确地设置种子以获得可重复性。有关设置种子的示例,请参阅boost的random_demo.cpp,大约20行。评论指出,如果基于时间快速连续播种,使用std::time(0)
会无意中导致两个生成器的相关结果。在您的情况下,您实际上需要相同的流,因此您希望将种子设置为显式值,例如54321
而不是std::time(0)
。相同的播种产生相同的发电机输出。