一、概念
1、随机数的基本概念
在计算机中并没有一个真正的随机数发生器,但是可以做到使产生的数字重复率很低,这样看起来好像是真正的随机数,实现这一功能的程序叫随机数发生器。
无论采用什么数学算法产生随机数发生器,都必须给它提供一个名为“种子”的初始值。而且这个值最好是随机的,或者至少这个值是伪随机的。“种子”的值通常是用快速寄存器或移位寄存器来生成的。
2、随机数生成器的工作过程
现在的C编译器都提供了一个基于ANSI标准的伪随机数发生器函数,用来生成随机数。它们们就是rand()和srand函数。这二个函数的工作过程如下:
1〉 首先给srand()提供一个unsigned类型的种子,其取值范围是0-65535(2^16-1);
2〉 然后调用rand(),它会根据提供给srand()的种子值返回一个随机数(windows下随机数取值范围是0-65535,linux下随机数取值范围是0-2147483647)
3〉 根据需要多次调用rand(),从而不断地得到新的随机数
4〉 无论什么时候,都可以赋予srand一个新的种子,从而进一步“随机化”rand的输出结果。
二、函数 srand与rand
1、函数srand
头文件:
stdlib.h
函数声明:
void srand(unsigned int seed);
作用:
设置rand()产生随机数时的随机数种子