在计算机中我们想要生成的随机数都是伪随机数。由一个随机种子来进行周期控制,每个随机种子代表了一个周期的伪随机数,一般一个周期伪65535。

我们可以使用rand()函数来生成随机数。如果用户没有设定随机种子时,系统默认的随机种子为1。每个周期中的随机数字时相同的,想要每个周期不同的话,可以用srand()函数进行初始化。

srand()函数可以对rand()函数进行初始化。可以利用srand((unsigned int)(time(NULL)))的方法,产生不同的随机种子,因为每一个运行程序的时间是不同。

总体的逻辑过程如下:

  1. 给srand()提供一个种子,它是一个unsigned int类型。
  2. 调用rand(),它会根据提供给srand()的种子值返回一个随机数(在0到RAND_MAX之间)。
  3. 根据需要多次调用rand(),从而不间断地得到新的随机数。
  4. 无论什么时候,都可以给srand()提供一个新的种子,从而进一步"随机化"rand()的输出结果。

产生一定范围随机数的通用表达公式如下所示:

  1. 要取得 [a,b) 的随机整数,使用 (rand() % (b-a))+ a。
  2. 要取得 [a,b] 的随机整数,使用 (rand() % (b-a+1))+ a。
  3. 要取得 (a,b] 的随机整数,使用 (rand() % (b-a))+ a + 1。
  4. 通用公式: a + rand() % n;其中的 a 是起始值,n 是整数的范围。
  5. 要取得 0~1 之间的浮点数,可以使用 rand() / double(RAND_MAX)。RAND_MAX 的范围最少是在 32767 之间(int)。用 unsigned int 双字节是 65535,四字节是 4294967295 的整数范围。

C/C++_随机数生成函数详解相关推荐

  1. nbns协议_网络协议详解1 - NBNS

    NetBIOS 简介 NetBIOS,Network Basic Input/Output System的缩写,一般指用于局域网通信的一套API,相关RFC文档包括 RFC 1001, RFC 100 ...

  2. php真随机数,php 的伪随机数与真随机数实例详解

    这篇文章主要介绍了PHP的伪随机数与真随机数详解,本文首先讲解了真随机数和伪随机数的相关概念,并给出了比用mt_rand()函数产生更好的伪随机数的一段例子代码,需要的朋友可以参考下 首先需要声明的是 ...

  3. 读Java并发编程实践记录_原子性_锁_同步容器详解_任务执行

    原子性: 单独的,不可分割的操作 不要使用过期状态值来决策当下的状态, 一定要先检查再执行(不检查, 将引发数据修改,丢失) 避免延迟初始化(懒加载: 先查看对象 == null, 然后new), 有 ...

  4. Linux驱动开发_设备文件系统详解

    目录 何为设备管理器? Linux下dev的作用 Devfs sysfs kobject udev proc 何为设备管理器? 设备管理器就是负责管理这台电脑上的外设,当我们通过电脑提供的USB口插入 ...

  5. java data使用_@Data注解详解及使用方法-Fun言

    @Data作用 去除Getter,Setter,equals,hashCode,toString方法,@Data注解在类上时,简化java代码编写,为该类提供读写属性.简单来说就是不用再手动添加get ...

  6. cass地籍参数设置快捷命令_南方cass详解+视频教程+插件汇总,小白快速上手!限时领取...

    南方cass详解+视频教程+插件汇总,小白快速上手!限时领取 对于测量员来说,扎实的基本功尤为重要.测量员需要通过测量为工程建设提供数据和图纸,这样才能在工作中做到游刃有余. 今天给大家整理了南方Ca ...

  7. cglib动态代理jar包_代理模式详解:静态代理+JDK/CGLIB 动态代理实战

    1. 代理模式 代理模式是一种比较好的理解的设计模式.简单来说就是 我们使用代理对象来代替对真实对象(real object)的访问,这样就可以在不修改原目标对象的前提下,提供额外的功能操作,扩展目标 ...

  8. tensorflow打印模型结构_社区分享 | 详解 TensorFlow 中 Placement 的最后一道防线 — Placer 算法...

    本文作者王思宇,阿里巴巴算法专家,从事深度学习算法平台建设,TensorFlow 分布式架构设计与大规模分布式性能优化工作,开源 TensorFlow 项目 contributor. 本文转自:互联网 ...

  9. java velocity详解_[velocity] velocity详解

    (1)为什么要使用模版语言? 在服务器端可以使用 Velocity处理模板和生成的动态内容(HTML.XML等).这和JSP技术的目标非常接近.但是,JSP模型可以毫无阻碍地访问底层的Servlet  ...

最新文章

  1. jquery checkbox勾选/取消勾选的诡异问题
  2. ASP.NET 状态管理概述(MSDN)
  3. 数字电路技术基础(四)
  4. SAP Commerce Cloud deprecation机制
  5. 【Android基础】Fragment 详解之Fragment介绍
  6. 图表可视化seaborn风格和调色盘
  7. 多站点IIS的架设:主机头法
  8. zookeeper watcher机制
  9. DDD开发框架ABP之导航菜单
  10. java.util.concurrent.locks.LockSupport
  11. Word——如何统计除去标点符号的字数
  12. 分享文章到新浪微博(源码)
  13. 应聘软件测试岗位需要掌握的基础知识与技能(面试常考内容)
  14. 产品经理项目从0-1工作简要流程
  15. ​ 解决金仓数据库KingbaseES对pg模式的单机数据库插入数据时,出现日志打印的问题
  16. 扫码签到突破100000用户
  17. 强制退出Mac程序的六种方法
  18. Linux文件打包与解压缩
  19. 微信图片怎样在pc 端打开查看并导出
  20. 【stm32c8t6多个串口同时使用】

热门文章

  1. Part 4 描述性统计分析(占比 10%)——上
  2. 用devc++表白_想谈一场甜甜的姐弟恋了 | 肇院表白墙716期
  3. mybatis使用范例并且和spring进行整合
  4. PHPChina中的Yii2与Discuz会员打通(单点登录)
  5. word之图表和公式的自动编号(zz)
  6. 医院信息化-5 集成平台和数据中心
  7. Linux系统怎么安装鲁大师,windows电脑下怎么安装苹果系统?
  8. html字与字之间插入小图片,HTML第三课文字图片插入 (转载)
  9. java.sql.SQLException: ORA-00904:标识符无效
  10. 50款免费精美求职简历封面word模板