c产生随机数(含时间种子)

有时候我们需要程序产生一个随机数.

可以用rand()

但是其实这个随机数是伪随机数,它是一个周期很长的一个值而已.

所以我们可以加入一个随机数种子srand(),这个可以取以当前时间为基准的一个值.

 1 #include <stdlib.h> 
 2   #include <stdio.h> 
 3   #include <time.h> 
 4   main() 
 5   { 
 6     int i,k;
 7    srand( (unsigned)time( NULL ) ); 
 8    for( i = 0; i < 10;i++ ) 
 9   { 
10      k=rand()%100+1;   //rand()%100表示取100以内的随机数,  由于rand产生的随机数是0到rand_max,而rand_max是一个很大的数,那么要产生一个从X到Y的随机数,x=rand()%(Y-X+1)+X 
11      printf( " k=%d\n", k ); 
12   } 
13 }

然后可以看一下我这里出的结果

 1 k=18
 2  k=62
 3  k=97
 4  k=28
 5  k=85
 6  k=97
 7  k=99
 8  k=47
 9  k=35
10  k=59

其实如果把srand去掉,可以发现也会产生一些随机数,只不过每次运行产生的随机数都是一样的.

那是因为你不设定种子,每次默认的种子都是1.

但是加上以后,就感觉比较随机了,每次都是不一样的.

猜你喜欢

转载自www.cnblogs.com/zhmlzhml/p/12506812.html