带时间种子的随机数生成器无法正常工作

时间:2016-07-18 20:02:53

标签: c++ class object random generator

所以我正在练习课程和标题。我试图通过将它放入另一个类来创建一个更简单的随机数生成器。源代码编译没有任何错误。但是,正如您在源代码中看到的,我使用time(0)作为种子来生成随机数。然而,当我多次重启程序以测试随机性时,种子不会改变。种子显然是一样的。为什么是这样 ?

的main.cpp

 #include <iostream>
 #include "RandomNumber.h"

 using namespace std;

 int main(){

    RandomNumber rand;
    int a = 10000;
    int randomnumber = rand.RandNumGen(1, 100);

    cout << "10 000 - a random number between 1 and 100 looks like this\n" << a << " - " << randomnumber << " = " << a - randomnumber << endl;
 return 0;
 }

RandomNumber.h

 #include <iostream>
 #include <ctime>
 #include <random>

 using namespace std;



 class RandomNumber
{
public:
    RandomNumber();
    int RandNumGen(int minimum, int maximum);

protected:

private:
};

#endif

RandomNumber.cpp

 #include "RandomNumber.h"

 using namespace std;

 RandomNumber::RandomNumber(){

 }

 int RandomNumber::RandNumGen(int minimum, int maximum){

 default_random_engine generator(time(0));

 uniform_int_distribution<int> RNG(minimum, maximum);

 return RNG(generator);
 }

简而言之。即使种子不断变化(使用时间以秒为单位),RandomNumber类中的RandNumGen函数也会返回相同的随机数。

由于问题被标记为重复。我不是在问为什么同一种子给出相同的数字。我问为什么时间(0)种子没有变化,时间总是在进步所以1到100之间的随机数应该是正确的?

0 个答案:

没有答案