所以我正在练习课程和标题。我试图通过将它放入另一个类来创建一个更简单的随机数生成器。源代码编译没有任何错误。但是,正如您在源代码中看到的,我使用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之间的随机数应该是正确的?