一、
函数原型:int rand()
头文件:#include <stdlib.h>
返回值为随机值,参数为空,通过 rand 函数就会产生一个随机数。
栗子:
#include <stdio.h>
#include <stdlib.h>
int main(){
int num;
num=rand();
printf("%d",num);
return 0;
}
运行该栗子你会得到一个随机数,但是你再运行一次会发现仍然是你第一次得到的数。那是因为产生随机数的原理是这样的:产生随机数的原理是根据一个值,一般称为随机种子,然后把这个种子作为参数,经过一系列的公式运算产生出一个值,这个值就是随机数。又因为默认的种子是不变的,所以每次根据这个种子算出来的随机数肯定就是一样的了。我们通常需要每次运行都得到不一样的随机数,那么就要结合下面这个函数才能实现此功能。
二、
函数原型:void srand(unsigned int seed)设置随机种子,不用此函数的话种子默认为1,当参数seed不同时根据种子得到的随机数就不同,我可以把时间作为种子参数,这样就可以实现种子不断变化,从而得到不同的随机数,得到当前时刻的函数如下。
三、
函数原型:time_t time(time_t *timer)
头文件:#include <time.h>
将参数timer设置为NULL,其会返回自 Unix 纪元(January 1 1970 00:00:00 GMT)起的当前时间的秒数的函数,主要用来获取当前的系统时间,注意,函数返回类型time_t是long 型。
所以srand()函数结合time()函数就可以得到每次运行都得到不一样的随机数了,栗子如下。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(){
int num;
srand((int)time(NULL));
num=rand();
printf("%d",num);
return 0;
}
四、
有时我们还需要要求随机数是在一个范围内,如实现掷色子程序,需要随机得到数在1~6范围内,此时我可以用‘%’来实现。
①假设我们要得到0~b范围内的数
我们可以将随机得到的数对b取余那么得到的数肯定是大于等于0小于b的。
②但当范围为a~b时(a不等于0)
我们可以先将得到的随机数对(b-a)取余,得到的数范围为0~(b-a),然后再加a,得到的数就在范围a~b内了。
整理自http://www.jb51.net/article/83721.htm