一、简介
1. 随机数:数学上产生的都是伪随机数,真正的随机数是使用物理方法产生的。
2. 随机数种子:随机数的产生是由算术规则产生的,srand(seed)的随机数种子(seed)不同,
rand()的随机数值就不同,如果每次的seed一样,则rand()产生的随机数也将一样。因此
要产生随机数,seed也必须是随机的值。
3. srand()产生随机数种子seed
原型:void srand(unsigned int seed);
为了使seed是随机的,通常用time(NULL)的值来作为seed.
如:srand(unsigned int(time(NULL)));
产生1~10之间的随机整数
4. time()制造随机数种子
原型:time_t time(time_t timer);
返回值:返回1970.1.1 00:00:00到当前时间的秒数。
5. rand()产生随机数
原型:int rand(void);
返回值:返回0~RAND_MAX的随机数,RAND_MAX定义在stdlib.h中,其值为:2147483647
rand()函数的执行过程:
- 如果之前调用过srand(seed),rand()会以srand(seed)产生的随机数种子来产生随机数
- 如果没有调用srand(seed),rand()会自动调用 srand(1)来产生随机数
- 如果调用srand(seed)产生的随机数种子是一样的,rand()产生的随机数也相同
二、实例
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define random(x) (rand()%(x))
int main(void)
{
int i;
int value;
/*注意要将srand()放在循环为,否则因执行速度太快
将导致产生的随机数一样*/
srand(time(NULL));
for(i=0;i < 10;i++)
{
value=random(10);
printf("%d\t", value);
}
printf("\n");
}