【发布时间】:2018-12-25 09:46:37
【问题描述】:
我正在尝试生成随机数(1 到 6),但每次运行我的程序时,我总是得到相同的两个数字。代码如下:
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
// function prototype
int random();
// main function
int main()
{
int rand1=random();
int rand2=random();
cout << rand1 << endl;
cout << rand2 << endl;
cin.get();
return 0;
}
//function definition
int random()
{
const int MAX_NUMBER = 6;
const int MIN_NUMBER = 1;
unsigned seed=time(0);
srand(seed);
int randomNumber;
randomNumber=(rand() % (MAX_NUMBER - MIN_NUMBER + 1)) + MIN_NUMBER;
return randomNumber;
}
我不知道出了什么问题以及为什么我总是得到相同的两个随机数。
【问题讨论】:
-
您应该只在程序开始时
seed一次。不是每次打电话给rand。 -
将
srand(time(0))移动到主目录 -
在代码的开头播种您的 RNG 一次。你这样做的方式使你的数字不那么随机,而不是更多。但是不确定这是不是答案。
-
注意编译时常量全部大写是反模式。