C++随机数重复的问题
2016-01-06 12:24
369 查看
错误的产生:
原因是因为,把随机数的seed初始化放在循环内部,将导致seed不断被执行初始化,而rand()函数是在第一次被初始化之后,随着每次调用都根据上一次的“随机数”来产生新的“随机数”。所以seed不断被初始化,那么rand()一直也在根据seed来产生第一个“随机数”,而现在的计算机,运行上面的程序根本不需要一秒,所以time(NULL)短时间内使一毛一样的。
还有和上面一毛一样的错误我也犯过-。-:
也作死的出现同样的错误,啊哈哈哈哈,我都怕了
所以别在同一时间用srand(time(0))函数初始化种子多次
#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))函数初始化种子多次
相关文章推荐
- C语言学习之关键字第二讲
- c/c++中将git当前版本信息编译到可执行文件中
- C++11多线程(十三):《C++11 内存模型一:介绍》
- C++11多线程(十二):《atomic 类型详解四:C 风格原子操作介绍》
- iOS之 C++与oc混编
- C++11多线程(十一):《atomic类型详解二:std::atomic》
- C语言运算符优先级与结合性
- C#调用C++DLL 使用 德卡 读卡器 获取身份证信息
- C++ STL之stack
- 标准C语言字符串函数
- c++ primer 学习笔记19 map容器
- C++中变量和类的定义
- C++11多线程(十):atomic原子操作的高效率(实例)
- CPPUTest 单元测试框架(针对 C 单元测试的使用说明)
- STL之list容器函数用法详解
- AFE4400数据处理——C语言实现22位数据转换
- 帮 C/C++ 程序员彻底了解链接器
- C++Lamda表达式
- c++中如何通过函数参数对指针进行赋值
- 在用到iframe的前端页面调用c++的或者android方法时提示找不到方法问题解决