srand 初始化随机种子,rand 产生随机数。
如果不用srand函数,每次产生的随机数列是相同的;如果用srand函数设置了种子,每次可以产生不同的随机数列。
1.随机种子:
随机种子是一种以随机数作为对象的以真随机数(种子)为初始条件的随机数。
2.伪随机数:
首先大家要知道,计算机是结构,条理非常清晰的数理逻辑.它所执行的东西都是按照人们编好的程序一步一步来的.所以它产生并不是真正的随机.我们所说的随机数的输出,仅仅是让计算机获取一切信息,然后根据一连串的算法输出看似随机的数。
2.伪随机数:伪随机数是以一个称为“种子”的数作为初始条件,通过固定的算法产生一个看上去像是随机产生的数字序列。举例来说,这个算法可以设计成类似于“将给定的种子开平方,取 有效数字的第2至9位作为下一次迭代的种子,重复此过程3次后,以结果的第1-4位作为返回值、并将该结果作为下次调用本过程的种子”等等。
然而,无论这个算法如何复杂,只要它固定不变,则对于相同的种子来说,每一次从这个种子开始、第n次通过该算法取得的伪随机数却总是一样的,因此必须再通过各种真正客观的途径使得该初始的种子不同。一般来说常用的方式是以运行时候的时钟时间,经一定变化后作为初始的种子的。简言之,种子相同,伪随机数列相同。
比较理想的是用变化的数,比如时间来作为随机数生成器的种子。time的值每时每刻都不同,即种子不同,所以产生的随机数也不同。3.rand和srand函数的头文件:#include<stdlib.h>,但是这个头文件是包含在#include <algorithm>的。
/*随机生成10个数,每次生成的10个数都不同*/ #include<iostream> #include<algorithm> #include<ctime>//必须有,time的头文件 using namespace std; int main() { int a=10; srand(time(NULL)); while(a--) cout<<rand()<<endl; return 0; } ********************************** /*随机生成10个数,每次生成的都相同*/ /*只是把srand函数去掉了0.0*/ #include<iostream> #include<algorithm> #include<ctime>//必须有,time的头文件 using namespace std; int main() { int a=10; while(a--) cout<<rand()<<endl; return 0; }