我的程序应该生成一个固定最大值为9999的随机数.这些数字用于创建对象.现在问题是当使用时间作为种子时,如果我一个接一个地创建两个对象,则将使用相同的数字创建两个对象(因为在该过程中时间没有改变).
我怎样才能更有效地做到这一点,以便每次运行程序时都可以生成一个不同的随机数?
关键是 - 只创建一个随机对象(或其状态),然后重复使用它来获取下一个值.这种方法通常用于其他语言,例如Java,C#,Python.
对于较旧的C风格示例,请参阅rand,这是您感兴趣的位
//initialize random seed ONCE srand (time(NULL)); // call MANY TIMES for next value rand(); rand(); rand();
与C++ 11相同的想法,例如具有均匀分布
// Setup ONCE std::random_device rd; std::mt19937 gen(rd()); std::uniform_int_distribution<> dis(1, 9999); // Call MANY TIMES to get next random number dis(gen); dis(gen); dis(gen);