1. 场景: rand 生成随机数

此函数生成均匀分布的伪随机整数, 每个随机数的范围在 0 和一个系统相关的最大值( 至少为 32767) 之间。

1.1 问题:

  • 一些应用需要随机浮点数。
  • 一些程序需要非均匀分布的数。

2. 解决方法:随机数库

随机数库的组成

  • 随机数引擎类( random-number engines)
    生成随机 unsigned 整数序列
  • 随机数分布类(random-number distribution)
    使用引擎返回服从特定概率分布的随机数

2.1 随机数引擎和分布

随机数引擎是函数对象类, 它们定义了一个调用运算符,该运算符不接受参数并返回一个随机 unsigned 整数。 我们可以通过调用一个随机数引擎对象来生成原始随机数

default_random_engine e; // 生成随机无符号数
for (size_ti = 0;i < 10; ++i)//e(T)"调用"对象来生成下一个随机数cout << e() <<" ";

输出:

16807 282475249 1622650073 984943658 1144108930 470211272…

2.2 随机数引擎操作

操作 解释
Engine e; 默认构造函数;使用该引擎类型默认的种子
Engine e(s); 使用整型值s作为种子
e.seed(s) 使用种子s重置引擎的状态
e.min(),e.max() 此引擎可生成的最小值和最大值
Engine::result_type 此引擎生成的unsigned整型类型
e.discard(u) 将引擎推进u步;u的类型为unsigned long long

2.3 分布类型和引擎

随机数发生器时, 是指分布对象和引擎对象的组合。

eg.为了得到在一个指定范围内的数, 我们使用一个分布类型的对象

// 初始化分布类型
// 生成0到 9 之间(包含)均匀分布的随机数
uniform_int_distribution<unsigned> u(0, 9);
// 初始化引擎
default_random_engine e;
// 随机生成0-9的无符号整数
cout << u(e) << endl;

输出

0 1 7 4 5 2 0 6 6 9

2.4 分布类型的操作

操作 解释
Dist d; 默认够赞函数;使d准备好被使用。其他构造函数依赖于Dist的类型;分布类型的构造函数是explicit的。
d(e) 用相同的e连续调用d的话,会根据d的分布式类型生成一个随机数序列;e是一个随机数引擎对象。
d.min(),d.max() 返回d(e)能生成的最小值和最大值。
d.reset() 重建d的状态,是的随后对d的使用不依赖于d已经生成的值。

C++ Primer 5th笔记(chap 17 标准库特殊设施)随机数相关推荐

  1. C++ Primer 5th笔记(chap 17 标准库特殊设施)流随机访问

    1. 流类型通常都支持对流中数据的随机访问. 可以重定位流, 使之跳过一些数据, 首先读取最后一行, 然后读取第一行, 依此类推. 1.1 标准厍提供了一对函数, 来定位( seek )到流中给定的位 ...

  2. C++ Primer 5th笔记(chap 17 标准库特殊设施)多字节低层IO操作

    1. 多字节操作 一些未格式化 IO 操作一次处理大块数据,这些操作要求我们自己分配并管理用来保存和提取数据的字符数组 操作 解释 is.get(sink, size, delim) 从is中读取最多 ...

  3. C++ Primer 5th笔记(chap 17 标准库特殊设施)未格式化的输入/输出操作

    1. 格式化IO 输入和输出运算符(<< 和>>)根据读取或写入的数据类型来格式化它们. 输入运算符忽略空白符 输出应用补白 精度等规则操作 2. 未格式化 IO (unfor ...

  4. C++ Primer 5th笔记(chap 17 标准库特殊设施)IO库 之操纵符

    1. 控制浮点数格式 可以控制浮点数输出三个种格式 • 以多高精度( 多少个数字) 打印浮点值 • 数值是打印为十六进制. 定点十进制还是科学记数法形式 • 对于没有小数部分的浮点值是否打印小数点 1 ...

  5. C++ Primer 5th笔记(chap 17 标准库特殊设施)匹配标志

    1. 用来控制匹配和格式的标志 标准库还定义了用来在替换过程中控制匹配或格式的标志,这些标志可以传递给函数 regex_search 或 regex_match 或是类 smatch 的 format ...

  6. C++ Primer 5th笔记(chap 17 标准库特殊设施)正则表达式类和输入序列类型

    1. 多种类型的输入 可以搜索多种类型的输入序列. RE 库为这些不同的输入序列类型都定义了对应的类型,eg. 普通 char 数据.wchar_t 数据 字符可以保存在标准库string或是 cha ...

  7. C++ Primer 5th笔记(chap 17 标准库特殊设施)正则表达式错误

    1. 指定或使用正则表达式时的错误 如果我们编写的正则表达式存在错误, 则在运行时标准库会抛出一个类型为regex 的异常 eg. try {// alnum右括号少了一个, 构造函数会抛出异常reg ...

  8. C++ Primer 5th笔记(chap 17 标准库特殊设施)bitset类型

    1. 提取 bitset 的值 函数返回一个值,保存了与bitset 对象相同的位模式. to_ulong() // 返回unsigned long to_ullong() //返回unsigned ...

  9. C++ Primer 5th笔记(chap 17 标准库特殊设施)tuple 类型

    1. 定义 将一些数据组合成单一对象(类似pair) tuple支持的操作 操作 解释 tuple<T1, T2, -, Tn> t; t是一个tuple,成员数为n,第i个成员的类型是T ...

最新文章

  1. GitHub标星1.2w+,Chrome最天秀的插件都在这里
  2. 亚马逊机器学习服务:深入研究AWS SageMaker
  3. Django 使用celery任务队列的配置
  4. as安装过程中gradle_重新认识AndroidStudio和Gradle,这些都是我们应该知道的
  5. 编码和解码、调制与解调
  6. 阿里云消息队列 2021 新功能新特性重要里程碑
  7. 关于JUnit5 你必须知道的(二)JUnit 5的新特性
  8. 在程序里面(服务器端)调用Winrar压缩文件的方法?另寻求一条语句转换的方法。vb.net到C#。...
  9. python中的 同步与异步 互斥锁 和 死锁
  10. 洛谷P1079 Vigenère 密码
  11. 牛B装备 XSS 漏洞利用工具[使用教程]
  12. Apache编译注释(二)
  13. PIFA-平面倒F天线[搬运]
  14. 纸牌游戏程序设计要点(C语言)
  15. mac访问服务器文件有把锁,mac文件被锁定怎么解决 mac解除文件锁定
  16. 单片机万年历阴阳历c语言,自己制作的单片机万年历 程序+原理图
  17. 40行Python代码,实现卷积特征可视化
  18. MySQL日志 - Error Log错误日志
  19. log4的配置和使用
  20. 卡尔卡西25首练习曲简析-音阶与音程训练

热门文章

  1. 对学校的希望和寄语_家长对孩子的期望寄语精选
  2. python设置坐标轴刻度值字体大小_python 设置xlabel,ylabel 坐标轴字体大小,字体类型...
  3. python里的os模块_python中os模块再回顾
  4. java static method_java static关键字静态方法详解,静态方法实例分享
  5. 专家解读 | 数据中心,从“电老虎”走向“数字经济发动机”
  6. 三伏天到了,记得为数据中心降降温
  7. NLP:GLUE和SuperGLUE基准的简介、任务分类、使用方法之详细攻略
  8. Dataset之babyboom.dat:babyboom.dat数据集的简介、安装、使用方法之详细攻略
  9. 成功解决AttributeError: module ‘enum‘ has no attribute ‘IntFlag‘?
  10. 如何快速掌握Pandas