文章插图
随机数的使用 , 是不少在学C语言过程中进行一些小功能开发的同学的一个技术问题 , 今天我们为大家讲解如何在C语言中使用随机数 。通常情况下 , 使用最多的方法的就是使用rand函数随机生成伪随机数来完成随机数的生成工作 。注意这里的伪随机数并非是假的! 只不过是计算机按自己的一套理论生成 , 并不是”完全理想”状态下的随机数 , 所以是可以接受的 。
函数原型为:int rand(void); 需要包含stdlib头文件 , 它可以生成一个0 ~RAND_MAX之间的数字 , 其中RAND_MAX是一个宏 , VC6下笔者查看为0x7fff , 建议大家亲自上机实验!
大家可以自行上机测试 , 如发现新的问题或有其他好玩的 , 欢迎告知我们!我们的QQ群号是496926338群内有大量的项目开发视频和新手教学视频
这个时候你可能会遇到下面几个问题:
Q1:为什么每次生成的数字都一样?A1:rand函数每次生成的数字与所谓的”种子”有关 , 使用rand函数前需要使用srand函数进行种种子(请见后文) 。如果没有调用 , 系统会默认给1 , 导致每次的随机数都一样 。
Q2:为什么最大是0x7fff?A1:这可能取决于编译器环境 , 笔者这里是VC6 , 在rand的函数中看到定义的最大值为0x7fff , 如下图:
Q3:如果我想生成特定范围内的数字 , 该如何写呢?A3:多多利用%求余运算符即可 。如:
生成10以内的数字 , 可以参考rand()%10
生成1~10之间的数字 , 可以参考rand()%10+1
特定的 , 要生成a~b之间的数字 , 可以参考rand()%(b-a+1)+a
更多时候 , 我们希望每次运行生成的数字都不相同 , 这个时候需要配合srand函数来解决这一问题 。关于具体原因 , 大家可以参考rand函数与srand函数的实现细节来加以理解 , 代码如下:
那么srand函数如何使用呢 , 先看函数原型:
void srand(unsigned seed); 只需要在rand函数使用之前 , 调用srand函数传入一个种子即可 。但事实上传入一个数 , 往往产生的随时仍然固定不变 。那么较为聪明的写法目前看来只有使用系统时间作为种子最为合适 , 所以这里srand的参数往往传入time(NULL)参数作为获取系统当前时间作为种子 , 来产生不同的结果!
并注意类型一致 , srand((unsigned)time(NULL)); 记得添加time.h的头文件!
测试代码如下:
大家可以自行上机测试 , 如发现新的问题或有其他好玩的 , 欢迎告知我们!
以上关于本文的内容,仅作参考!温馨提示:如遇健康、疾病相关的问题,请您及时就医或请专业人士给予相关指导!
「四川龙网」www.sichuanlong.com小编还为您精选了以下内容,希望对您有所帮助:- 教你删除数组最后一位 php删除数组最后一个元素使用什么方法
- 减肥方法:数组全身减肥动作帮助夏季瘦身
- ae语言设置方法 ae2018中英文切换工具
- 我爱你 西班牙语:英语派:我爱你,I Love you,用n种语言对你表白到地老天荒!
- 二进制转换十六进制方法 C语言十进制转换二进制
- 老漂族现状:语言不通-融入新生活难-除此之外还面临什么问题?
- 男人爱不爱你看哪些身体语言就知道
- 条形码扫描器在线使用 二维码扫描在线识别
- 今年最火的十大网络语言是什么?
- 最受欢迎的与众不同搞笑网名