C语言如何使用随机数?
功能介绍 推送一些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,如下图:

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的头文件!
测试代码如下:

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

*C语言如何使用随机数?相关推荐

  1. c语言输出字母随机数,你好,怎样用c语言输出一个1到100的随机数

    你好,怎样用c语言输出一个1到100的随机数以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 你好,怎样用c语言输出一个1 ...

  2. c语言中有关随机数的程序,C语言中随机数相关问题

    用C语言产生随机数重要用到rand函数.srand函数.及宏RAND_MAX(32767),它们均在stdlib.h中进行了声明. int rand(void);//生成一个随机数 voidsrand ...

  3. C语言:生成随机数(并非固定的随机数)——rand()、srand()

    C语言:生成随机数 1.rand() 函数 2.srand() 函数 3.生成一定范围内的随机数 在实际编程中,我们经常需要生成随机数. 1.rand() 函数 在C语言中,我们一般使用 <st ...

  4. C语言中生成随机数函数

    文章目录 前言 一.产生随机数 二.具体分析 1.rand函数 (1)范围 (2)对应头文件 2.srand函数 3.整合 总结 前言 本文主要详细介绍如何在C语言中生成随机数. 一.产生随机数 我们 ...

  5. c分布 的程序设计语言,#2020学习打卡##C程序设计语言# C语言中的随机数函数解析...

    在计算机中并没有一个真正的随机数发生器,但是可以做到使产生的数字重复率很低,这样看起来好象是真正的随机数,实现这一功能的程序叫伪随机数发生器. 有关如何产生随机数的理论有许多,如果要详细地讨论,需要厚 ...

  6. C语言如何产生随机数

    1.基本函数 在C语言中取随机数所需要的函数是: int rand(void); void srand(unsigned int n); rand()函数和srand()函数被声明在头文件stdlib ...

  7. 单片机c语言随机数,单片机C语言如何产生随机数

    随机数在单片机的应用中也是很多的,当然产生随机数的方法有很多,当中有一个就是利用单片机定时器,取出未知的定时器THX和TLX的值,再加以运算得到一个规定范围内的随机数值.这做法也是可行的.或者预先写好 ...

  8. c语言微秒级延迟程序,C语言中生产随机数及计算运行时间(微秒级)

    java中要生产随机数的 话 直接 new一个 Random就 可以 了 ,c语言中的话会稍微麻烦一点点. 计算运行时间 在比较算法运行效率中 要 用到 . #include #include #in ...

  9. C语言如何设计随机数

    如果你想学会设计0~100之间这样简单的随机整数的话我想你来对了地方 通用公式是:a+rand()%n a是起始值 n是整数范围 如下图 有几个需要注意的点 用到了随机函数所以在头文件里加上 #inc ...

最新文章

  1. Tensorflow tf.layers
  2. mysql慢日志管理
  3. python大鱼吃小鱼_python 游戏编程 大鱼吃小鱼
  4. 关于location.href几种用法的区别
  5. 前端悬浮窗效果_头条|磁悬浮离心机组迎来市场春天
  6. bmp转YUV RGB转YUV HM学习
  7. MyBatis使用log4j输出日志
  8. python dll load failed_python安装MySQLdb的问题 ImportError: DLL load failed
  9. 正弦函数_傅里叶为什么会想到把函数展开为正弦波
  10. 开源的仓库管理软件——Sonatype Nexus
  11. 手把手教你Mac重装系统不再难:苹果电脑重装系统教程
  12. JPA如何查询部分字段
  13. 登录英雄联盟显示正在连接服务器,windows10系统登录英雄联盟出现连接不上服务器如何解决...
  14. cad lisp 画梯形_Lisp自动画梯形_CAD lisp 求助一段代码实现自动画弧!
  15. C语言:链表(动态)创建之头插法和尾插法
  16. chareter oracle,Oracle数据库的操作程序.pdf-汇文网
  17. Android实现三角形气泡效果方式汇总,高级安卓面试题及答案2019
  18. win10计算机扫描,win10电脑哪里添加扫描仪?win10电脑添加扫描仪的方法
  19. hpe最新服务器型号,HPE ProLiant DL580 Gen10
  20. 商务汇报PPT制作的七堂课-第三课:结构搭建

热门文章

  1. 二项分布、泊松分布,正态分布(高斯分布)之间的联系与区别
  2. nor flash操作
  3. 有没有html做的平安夜页面或者圣诞节,送给同学的平安夜圣诞节祝福语
  4. 4. 寻找两个正序数组的中位数
  5. Mysql技术-innodb引擎-笔记
  6. vimdiff及vim split
  7. 学术论文写作1——abstract,句型
  8. 星星之火-31:WCDMA码分多址复用与解复用的数学计算案例
  9. Python 字典学习总结(自学)
  10. C++使用AES+Base64算法对文本进行加密