c语言 |
您所在的位置:网站首页 › 生成四个随机数c语言 › c语言 |
1、rand函数
rand函数是c语言提供的一个可以生成随机数的一个函数,原型:int rand (void); 使用时需要包含头文件:stdlib.h 但是,rand生成的随机数仅仅只是伪随机数,这个伪随机数的范围在0~RAND_MAX之间,RAND_MAX的大小可能会因为不同编译器而不同,但大部分都为32767。为什么会说是伪随机数呢?这里做一个测试,运行两次下面的代码: #include #include int main() { printf("%d\n", rand()); printf("%d\n", rand()); printf("%d\n", rand()); return 0; }会发现结果如下: srand函数是用来初始化随机数的生成器的,原型:void srand (unsigned int seed);程序在调用rand函数之前先调用srand函数来初始化随机数的生成器,初始化的结果由srand函数的参数seed来决定,只要参数seed是变化的,rand生成随机数的种子也将是变化的,每次生成的随机数也就会是变化的。那么参数seed选用什么呢? 3、time函数在大多数情况下,一般是选用时间作为种子,时间是无时无刻都在发生变化的,为了获得时间,就会运用到time函数,time函数原型:time_t time (time_t* timer);使用时也需要包含头文件:time.h time函数会返回当前的日历时间,本质上是返回1970年1月1日0时0分0秒到现在程序运行时间之间的差值,单位是秒,返回类型是time_t类型,time_t 类型本质上其实就是32位或者64位的整型类型。但如果time的参数timer是非NULL的指针的话,函数会在返回时间的差值的同时将返回值放在timer指向的内存中带回去,我们需要使用这个差值,便不能让他带回去,所以timer需要是NULL,这样才会只是返回差值,这个时间差也被叫做时间戳。 调⽤time函数返回时间戳时可写成:time(NULL);但这里没有接收返回值。 4、随机数的生成运用上面的三个函数,我们便能生成随机数了,最上面的代码便能改写为: #include #include #include int main() { srand((unsigned int)time(NULL));//这里因为srand的参数是unsigned int类型,所以为了保险起见将time函数的返回值进行强制类型转换 printf("%d\n", rand()); printf("%d\n", rand()); printf("%d\n", rand()); return 0; }进行多次运行,便能发现每次产生的值都是变化的了 由于原伪随机数的范围基本是0到32767,范围较大,有的时候需要控制范围使用,那么改这么办呢? 假如编写一个猜数字游戏,我们只需要它生成一个1到100的整数就可以了,就需要将rand()改为rand()%100+1,运行后得到的随机数就会在1到100之间。 如果要得到一个a到b的随机数,通用表达式如下:a + rand()%(b-a+1) |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |