C语言如何使用随机数?

栏目: C · 发布时间: 5年前

内容简介:功能介绍 推送一些C语言方面的知识,提供C语言/C++语言资料,讨论和学习C语言/C++编程知识。给学习C语言的同学们一些帮助。随机数的使用,是不少在学C语言过程中进行一些小功能开发的同学的一个技术问题,今天我们为大家讲解如何在C语言中使用随机数。通常情况下,使用最多的方法的就是使用rand函数随机生成伪随机数来完成随机数的生成工作。注意这里的伪随机数并非是假的! 只不过是计算机按自己的一套理论生成,并不是”完全理想”状态下的随机数,所以是可以接受的。

功能介绍 推送一些 C语言 方面的知识,提供C语言/C++语言资料,讨论和学习C语言/C++编程知识。给学习C语言的同学们一些帮助。

随机数的使用,是不少在学C语言过程中进行一些小功能开发的同学的一个技术问题,今天我们为大家讲解如何在C语言中使用随机数。

通常情况下,使用最多的方法的就是使用rand函数随机生成伪随机数来完成随机数的生成工作。注意这里的伪随机数并非是假的! 只不过是计算机按自己的一套理论生成,并不是”完全理想”状态下的随机数,所以是可以接受的。

函数原型为:int rand(void); 需要包含stdlib头文件,它可以生成一个0 ~RAND_MAX之间的数字,其中RAND_MAX是一个宏,VC6下笔者查看为0x7fff,建议大家亲自上机实验!

这个时候你可能会遇到下面几个问题:

Q1:为什么每次生成的数字都一样?

A1:rand函数每次生成的数字与所谓的”种子”有关,使用rand函数前需要使用srand函数进行种种子(请见后文)。如果没有调用,系统会默认给1,导致每次的随机数都一样。

Q2:为什么最大是0x7fff?

A2:这可能取决于编译器环境,笔者这里是VC6,在rand的函数中看到定义的最大值为0x7fff,如下图:

C语言如何使用随机数?

Q3:如果我想生成特定范围内的数字,该如何写呢?

A3:多多利用%求余运算符即可。如:

生成10以内的数字,可以参考rand()%10

生成1~10之间的数字,可以参考rand()%10+1

特定的,要生成a~b之间的数字,可以参考rand()%(b-a+1)+a

更多时候,我们希望每次运行生成的数字都不相同,这个时候需要配合srand函数来解决这一问题。关于具体原因,大家可以参考rand函数与srand函数的实现细节来加以理解,代码如下:

C语言如何使用随机数?

C语言如何使用随机数?

那么srand函数如何使用呢,先看函数原型:

void srand(unsigned seed); 只需要在rand函数使用之前,调用srand函数传入一个种子即可。但事实上传入一个数,往往产生的随时仍然固定不变。那么较为聪明的写法目前看来只有使用系统时间作为种子最为合适,所以这里srand的参数往往传入time(NULL)参数作为获取系统当前时间作为种子,来产生不同的结果!

并注意类型一致,srand((unsigned)time(NULL)); 记得添加time.h的头文件!

测试代码如下:

C语言如何使用随机数?

大家可以自行上机测试,如果有学习C/C++或者想要学习C/C++可以加我们的学习交流QQ群:712263501群内有相关学习资料


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

微商思维

微商思维

龚文祥、罗剑锋、触电会 / 金城出版社 / 2018-7 / 88.00元

微商不仅仅是一种继传统实体、电商之后的革命性新兴商业形态,更是一种能够写入中国商业史的思潮。龚文祥新著《微商思维》,从道的层面对广大微商人的商业实践智慧进行了高度浓缩与抽象总结,站在更高的视角解读微商背后的商业逻辑与本质。 本书前半部分,主要从本质、品牌、营销等几个方面,阐述了微商思维的内涵及应用场景,帮助读者了解并认识这种革命性的商业思维。 后半部分主要是触电会社群内部各位大咖的实操......一起来看看 《微商思维》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

URL 编码/解码
URL 编码/解码

URL 编码/解码

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器