(伪)随机数发生器
它由time()、srand()、rand()三个函数组成:
- time()[time_t time(time_t * t)]
(1)用途
计算从GMT[January 1 1970 00:00:00]时间起至当前本时间的秒数.
(2)数据类型[time_t]与形参[t]的意义
a.数据类型[time_t]
表示UTC[Cootdinated Universal Time[世界标准时间]](这里用“’unsigned int”强制转换它的数据类型);
b.形参[t]
‘t’是指针变量,它将当前本地时间存入它指向的存储单元中(如 果‘t’为空指针[t=NULL]则直接返回当前本地时间). - srand()[void srand((unsigned int) seed)]
(1)用途
初始化(伪)随机数发生器(让系统给随机种子[seed]这个对象赋值).
(2)形参[seed]
a.“seed”被称为“随机种子”,rand()函数根据它产生一系列随机整数序列(“seed”的值一般为“系统定时/计数器/系统时间”的值但也可以是手动输入的“’unsigned int”数据类型的值(例如:1、-1等));
b.不使用srand()函数直接调用rand()函数时系统自动调用srand()函数产生不同的随机整数序列;
c.“seed”的值为定值(例如:srand(2)、srand(85)等)rand()函数产生的一系列随机整数序列是相同的;
d. “seed”的值不是定值时rand()函数产生的一系列随机整数序列是不同的; rand()[int rand(void)]
(1)用途
产生一个在[0,RAND_MAX]之间的随机整数序列.总结
(1)在初始化“系统定时/计数器/系统时间”的值(srand((unsigned int)time(NULL)))之后,rand()函数根据随机种子 [seed]的值产生一系列随机整数序列;
(2)随机整数序列的值在[0,RAND_MAX]之间而非[seed,RAND_MAX]之间.
/*不使用srand()*/
do
{
printf("第 %d 次随机产生四个数(1-13):",j);
for(i=0; i<4; i++)
{
num[i] = rand()%(