C语言产生随机数
2017-02-04 00:31
232 查看
一、简介
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"); }