【C语言】产生随机数

时间:2022-05-16 09:52:06

一、

函数原型: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