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

Posted zhmlzhml

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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
", 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.

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

以上是关于c产生随机数(含时间种子)的主要内容,如果未能解决你的问题,请参考以下文章

Random类

两个不同的种子产生相同的“随机”序列

c语言中rand()函数怎么用?

如何用c语言产生一定范围内的随机数?

如何用C语言生成时间的随机数

c语言产生4位随机数