c++随机函数rand,C语言rand生成随机数的范围

c++随机函数rand,C语言rand生成随机数的范围,C语言中随机数rand()函数详解

大家好,本文主要讲C语言中随机数rand()函数的详细讲解。有兴趣的同学过来看看,如果对你有帮助记得收藏。

生活中很多场景都需要产生随机数,比如抽奖、打牌、游戏。C语言标准库函数中有一个专门用来生成随机数的函数rand。其功能原型如下:

int _ _ cdecl rand(void);

rand函数没有参数,其返回值是一个随机数。这里有一个简单的例子来测试rand功能。

#包含stdio.h

#包含stdlib.h

int main(int argc,char** argv) {

int I;

I=rand();

printf('%d ',I);

返回0;

}

直接调用rand函数生成一个随机数并打印出来。运行结果如下:

此时产生的随机数是41。下面再来看看几个随机数。

for循环产生十个随机数。从打印结果可以看出,第一个随机数是41,其他9个数据都比较大。将随机次数更改为15次,然后再次测试。

此时生成了15个随机数,但是对比10个随机数可以发现,生成的随机数的前10个数和最后一个是一模一样的。再次运行程序后,生成的随机数和上次一模一样。

这一刻的原因是什么?随机数生成函数rand是否存在bug?

其实rand函数产生的随机数是伪随机的。它基于一个数值,然后通过公式计算一个值,计算结果作为随机数返回。这个固定参考的值称为“种子”。电脑每次启动都会生成一个种子,然后在以后的操作中这个种子不会改变。所以每次执行rnad函数,它的参考种子值是固定的,所以每次产生的随机数是固定的。如果每次生成的随机数不一样,那么每次生成随机数之前需要改变种子的值。

的种子值由srand函数生成。该函数的原型如下:

void _ _ cdecl srand(unsigned int _ Seed);

该函数没有返回值,其参数是需要设置的种子值。代码中还添加了修改种子的函数。

将种子值设置为10,然后生成10个随机数。

将种子值设置为20,然后生成10个随机数。

可以看出,当种子的值发生变化时,生成的随机数也发生变化。如果程序需要重复使用随机性,那么随机种子的值就不可能是一个常数值,它必须时刻变化,这样产生的随机数才能时刻变化。在系统中,时刻变化的数字,你首先能想到的是时间,因为时间是实时变化的,不可能有相同的值。

则可以获得系统时间,然后将其用作随机数的种子。时间功能time的原型如下:

_ _ CRT _ INLINE Time _ t _ _ cdecl Time(Time _ t * _ Time){ return _ Time 64(_ Time);}

调用time函数后,会返回当前系统时间的秒,其参数可以直接设置为NULL。

调用time函数时,需要添加头文件time.h以时间值作为随机种子,这样每次生成的随机数都会不一样。但是从上面的输出结果可以看出,每次生成的随机数大小变化很大。想把随机数的大小控制在一定范围内,应该怎么做?

要控制数字的范围,可以使用数学余数运算。如果想把生成的数控制在10以内,就把生成的数除以10,然后取余数。以便余数的大小不会超过10。

这里把生成的随机数除以100取余数,这样最终生成的随机数会在100以内。

本文关于C语言中随机数rand()函数的详细讲解到此为止。有关C语言中rand()函数的更多信息,请搜索我们以前的文章或继续浏览下面的相关文章。希望你以后能支持我们!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • c语言调用退出函数 c语言退出整个程序怎么写
  • c语言中怎么给函数初始化 c语言的初始化语句
  • c语言编写函数计算平均值 c语言求平均函数
  • 详解c语言中的字符串数组是什么,详解c语言中的字符串数组结构,详解C语言中的字符串数组
  • 表达式求值c++实现,c语言实现表达式求值
  • 看懂c语言基本语法,C语言详解,C语言的基本语法详解
  • 用c语言实现快速排序算法,排序算法设计与实现快速排序C语言,C语言实现快速排序算法实例
  • 深入解析c语言中函数指针的定义与使用方法,深入解析c语言中函数指针的定义与使用情况,深入解析C语言中函数指针的定义与使用
  • 描述E-R图,E-R图举例,关于C语言中E-R图的详解
  • 折半查找法C语言,折半查找算法(算法设计题)
  • 折半查找法C语言,c语言折半法查找数据,C语言实现折半查找法(二分法)
  • 扫雷小游戏c++代码设计,c语言扫雷游戏源代码,C语言实现扫雷小游戏详细代码
  • 怎样统计程序代码行数,C语言统计行数,C#程序员统计自己的代码行数
  • 基于c语言的贪吃蛇游戏程序设计,用c语言编写贪吃蛇游戏程序,C语言实现简单的贪吃蛇游戏
  • 图的两种遍历算法,图的遍历算法代码c语言,Python算法之图的遍历
  • 留言与评论(共有 条评论)
       
    验证码: