C语言中,rand函数是用来产生随机数,但是并不是真真意义上的随机数,是一个伪随机数,是根据一个种子数产生的,我们可以称它为种子,为基准以某个递推公式推算出来的一系数,当这系列数很大的时候,就符合正态公布,从而相当于产生了随机数,但这不是真正的随机数,当计算机正常开机后,这个种子的值是定了的,除非你破坏了系统,为了改变这个种子的值,C提供了srand()函数,它的函数原形是void srand( unsigned int seed );rand()会返回一随机数值,范围在0至RAND_MAX间。RAND_MAX定义在stdlib.h的头文件中(32767),在调用此函数产生随机数前,必须先利用srand()设好随机数种子,如果未设随机数种子,rand()在调用时会自动设随机数种子为1。
如何产生不可预见的随机数种子呢?我们可以利用时间,利用函数srand((unsigned int)(time(NULL))是一种方法,因为每一次运行程序的时间是不同的。time_t time( time_t *timer );函数time返回值是当前时间点与计算机生日的差值,利用时间可以很好的产生不同的随机数种子
在C语言里所提供的随机数发生器的用法:现在的C编译器都提供了一个基于ANSI标准的伪随机数发生器函数,用来生成随机数。它们就是rand()和srand()函数。
*首先给srand提供一个随机数种子种子,它是一个unsigned int类型,其取值范围从0~65535;
*然后调用rand,它会根据提供给srand的种子值返回一个随机数(在0到32767之间)
*无论什么时候,都可以给srand()提供一个新的种子,进一步“随机化”rand的值。
例如:产生1到100之间的随机数
如何产生不可预见的随机数种子呢?我们可以利用时间,利用函数srand((unsigned int)(time(NULL))是一种方法,因为每一次运行程序的时间是不同的。time_t time( time_t *timer );函数time返回值是当前时间点与计算机生日的差值,利用时间可以很好的产生不同的随机数种子
在C语言里所提供的随机数发生器的用法:现在的C编译器都提供了一个基于ANSI标准的伪随机数发生器函数,用来生成随机数。它们就是rand()和srand()函数。
*首先给srand提供一个随机数种子种子,它是一个unsigned int类型,其取值范围从0~65535;
*然后调用rand,它会根据提供给srand的种子值返回一个随机数(在0到32767之间)
*无论什么时候,都可以给srand()提供一个新的种子,进一步“随机化”rand的值。
例如:产生1到100之间的随机数
#include<stdio.h>
int main()
{
srand((unsigned)time(NULL));//产生随机数种子
int rand_num=(rand()%100)+1;//产生1到100直接的随机数
printf("rand_num=%d\n",rand_num);
return 0;
}