【C语言】产生随机数

1、
函数

函数原型:int rand()spa

头文件:#include <stdlib.h>.net

返回值为随机值,参数为空,经过 rand 函数就会产生一个随机数。code

栗子:htm

#include <stdio.h> #include <stdlib.h>
int main(){ int num; num=rand(); printf("%d",num); return 0; }

    运行该栗子你会获得一个随机数,可是你再运行一次会发现仍然是你第一次获得的数。那是由于产生随机数的原理是这样的:产生随机数的原理是根据一个值,通常称为随机种子,而后把这个种子做为参数,通过一系列的公式运算产生出一个值,这个值就是随机数。又由于默认的种子是不变的,因此每次根据这个种子算出来的随机数确定就是同样的了。咱们一般须要每次运行都获得不同的随机数,那么就要结合下面这个函数才能实现此功能。blog

2、原型

函数原型:void srand(unsigned int seed)设置随机种子,不用此函数的话种子默认为1,当参数seed不一样时根据种子获得的随机数就不一样,我能够把时间做为种子参数,这样就能够实现种子不断变化,从而获得不一样的随机数,获得当前时刻的函数以下。io

 

3、
class

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

4、

有时咱们还须要要求随机数是在一个范围内,如实现掷色子程序,须要随机获得数在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

相关文章
相关标签/搜索