【发布时间】:2012-12-17 16:19:15
【问题描述】:
可能重复:
how to generate different random number in a loop in 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);
}
}
现在我得到了输出:
1357207288 0 1 4
1357207289 0 1 4
1357207290 0 1 4
等等。我想每次都得到不同的随机数。我怎样才能做到这一点。
【问题讨论】:
-
将对
srand()的调用移出循环。 -
既然你说你用的是C++,那你可以看看C++11新的pseudo random functionality,尤其是
std::uniform_int_distribution这个类,它可以用来生成一个范围内的随机数.链接中有一个如何使用它的示例。 -
@arjun 您尝试将
srand移出循环,但没有任何改变?我觉得很难相信。您能否检查一下:1)您是否从循环内部删除srand并改为在循环之前将其插入,2)您是否在进行更改后实际重新编译了程序? -
@jogojapan 最后我发现很难相信
srand是错误的,因为他也把它放出来了,而且每次都是不同的数字(鉴于他显示了正确的输出,这可能不是因为他的代码错过了他的输出中存在的空格,嗯)。 -
为了将来参考,当在帖子中包含该代码的代码和输出时,请使其成为产生输出的确切代码。也请阅读sscce.org。