以前一直没有仔细想过为什么如何设置随机数种子?设置随机数种子有什么用,今天有时间,拿出来分析一下:
直接通过rand() 函数获得随机数每次都会是一样,例如,第一次程序运行的时候是8,第二次运行还会是8;后来发现有一个可以设置随机数种子的函数:srand() ,srand()的原型:
void srand(unsigned seed);
这个函数需要提供一个种子,使用相同的种子的话,后面的rand函数在程序第二次启动的时候就会出现一样的随机数。
例:
1 #include "stdlib.h"
3 #include "stdio.h"
4
5 int main(void)
6 {
7 int i;
9 srand(1);
10
11 for(i = 0;i < 10; i++)
13 {
14 printf(" %d",rand()%1000);
16 }
17 return 0;
18 }
这段代码每次启动都会输出一样的随机数:41 467 334 。。。。。 ,这样做事不符合我的初衷的,由此我想到,是不是每次程序运行srand() 时,设置的种子可以是不一样的呢,所以我使用了时间函数:
1 #include "stdlib.h"
2 #include "stdio.h"
3 #include "time.h"
4
5 int main(void)
6 {
7 int i;
8 time_t temp_time;
9 srand((unsigned)time(&temp_time));
10
11 for(i = 0;i < 10; i++)
12 {
13 printf(" %d",rand()%1000);
14 }
15 return 0;
16 }
这样,每一次启动程序输出的随机数都是不一样的了!