可能重复:
如何在C++循环中生成不同的随机数?
这是我的代码:
for(i=0;i<10;i++)
{
srand ( time(NULL) );
cout<<time(NULL);
max=100,min=0;
for(j=0;j<3;j++)
{
cout<<(( (rand() % (max - min + 1)) + min)%5);
}
}
Run Code Online (Sandbox Code Playgroud)
现在我得到输出:
1357207288 0 1 4
1357207289 0 1 4
1357207290 0 1 4
等等.我想每次都得到不同的随机数.我怎样才能做到这一点.
你反复得到同样的原因是因为你每次都用相同的种子初始化它.也就是说,由于您执行的操作非常少,因此从循环的第一次迭代到最后一次迭代,没有一秒钟过去.因此,time(nullptr)每次迭代都会返回相同的内容.
要解决这个问题,请移出srand ( time(NULL) );循环,这意味着只设置一次随机种子.
srand ( time(NULL) );
for(int i=0;i<10;i++)
{
cout<<time(NULL);
int max=100;
for(int j=0;j<3;j++)
{
cout<<(( (rand() % (max - min + 1)) + min)%5);
}
}
Run Code Online (Sandbox Code Playgroud)