您的位置:首页 > 编程语言 > C语言/C++

C++随机数重复的问题

2016-01-06 12:24 369 查看
错误的产生:

#include<iostream>
#include<time.h>
#include<stdlib.h>
using namespace std;

int main(){
//在循环中初始化种子,将会导致随机数重复
for(int i=0;i<=10;i++){
srand((unsigned int)time(NULL));
cout<<rand()<<endl;
}
}


原因是因为,把随机数的seed初始化放在循环内部,将导致seed不断被执行初始化,而rand()函数是在第一次被初始化之后,随着每次调用都根据上一次的“随机数”来产生新的“随机数”。所以seed不断被初始化,那么rand()一直也在根据seed来产生第一个“随机数”,而现在的计算机,运行上面的程序根本不需要一秒,所以time(NULL)短时间内使一毛一样的。

还有和上面一毛一样的错误我也犯过-。-:

#include<iostream>
#include<time.h>
#include<stdlib.h>
using namespace std;

int xxx(){
srand((unsigned int)time(NULL));
for(int i=0;i<=10;i++){
/*---balabala中间一坨代码省略,反正就是递归-----*/
cout<<rand()<<endl;
xxx();
}
}


也作死的出现同样的错误,啊哈哈哈哈,我都怕了

所以别在同一时间用srand(time(0))函数初始化种子多次
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: