我的程序应该生成最大固定值为 9999 的随机数。这些数字用于创建对象。现在的问题是,当使用时间作为种子时,如果我一个接一个地创建两个对象,那么两个对象都将使用相同的数字创建(因为时间在此过程中没有改变)。
我怎样才能更有效地做到这一点,以便每次运行程序时都能生成一个不同的随机数?
最佳答案
关键是 - 只创建一个随机对象(或其状态)一次,然后重新使用它来获取下一个值。这种方法通常用于其他语言,例如 Java、C#、Python。
有关较早的 C 风格示例,请参阅 rand , 这是你感兴趣的位
//initialize random seed ONCE
srand (time(NULL));
// call MANY TIMES for next value
rand();
rand();
rand();
与C++11 相同的想法,例如 uniform distribution
// 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);
关于c++ - 如何在不使用时间作为种子的情况下在 C++ 中生成随机数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41875884/