我只是潜入一些C ++,我决定制作一个随机数生成器(数字是多么随机,这无关紧要)。大多数代码都是从网上复制出来的,但是我的新手眼睛看不出有什么问题,有什么办法可以调整一下,每次给出一个除“6”以外的数字吗?
#include <iostream>
#include <string>
#include <cstdlib>
using namespace std;
int random_number(int min, int max)
{
srand((unsigned)time(0));
int random_num;
int range=(max-min)+1;
random_num = min+int(range*rand()/(RAND_MAX + 1.0));
return random_num;
}
int main()
{
for(int i =0;i < 100;i++)
{
cout << random_number(3,10) << endl;
}
}
答案 0 :(得分:4)
不要在random_number()中调用srand()。这将在每次调用时重新播种随机数生成器。对于100次通话,您很可能在每次通话时获得相同的种子,因此数字相同。
答案 1 :(得分:4)
在循环之前添加srand
srand((unsigned)time(0));
for(int i =0;i < 100;i++)
{
std::cout << random_number(3,10) << endl;
}
答案 2 :(得分:2)
问题是你每次都使用srand。 CPU速度很快,它会在一秒钟内执行所有这些代码,因此每次都会得到相同的种子。
将srand移出循环,只调用一次。