C++ 具名要求:随机数引擎 (RandomNumberEngine)
| 基础 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 类型属性 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 库所属 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 容器 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 容器元素 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 迭代器 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 流 I/O | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 格式化 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 随机数 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 并发 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 范围 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 其他 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
随机数引擎是函数对象,返回无符号整数值,它使得可能结果范围中的每个值拥有(理想的)相等概率。
任何随机数引擎亦为均匀随机位生成器 (UniformRandomBitGenerator) ,从而可能插入任何随机数分布,以获得随机数(正式而言是随机变量)。
要求
满足均匀随机位生成器 (UniformRandomBitGenerator)
的类型 E 会另外满足随机数引擎 (随机数引擎 (RandomNumberEngine)
) ,若给定
-
T,E::result_type所指名的类型 -
s,T类型值 -
e,E类型的非 const 值 -
v,E类型左值 -
x与y,E类型的可能为 const 的值 -
q,某满足种子序列 (SeedSequence) 的类型的左值 -
z,unsigned long long类型值 -
os,输出流 -
is,输入流
而下列表达式合法并拥有其指定的效果:
| 表达式 | 返回类型 | 要求 |
|---|---|---|
| E() | 创建引擎,其状态与所有其他默认构造的 E 类型引擎相同。
|
|
| E(x) | 创建引擎,其状态与 x 的相同。
|
|
| E(s) | 创建引擎,其初始状态为 s 所确定。
|
|
| E(q) | 创建引擎,其初始状态以单次调用 q.generate 确定。
|
|
| e.seed() | void
|
设置 e == E() 。 |
| e.seed(s) | void
|
设置 e == E(s) 。 |
| e.seed(q) | void
|
设置 e == E(q) 。 |
| e() | T
|
返回闭区间 [E::min(), E::max()] 中的值。拥有均摊常数复杂度。 |
| e.discard(z) | void
|
令 e 的状态前进,如同通过 z 次连续调用
e() 。
|
| x == y | bool
|
若 x 与 y 在相同状态(满足将来对
x() 和 y() 的重复调用将产生等同的数列)则为
true 。否则为 false 。
|
| x != y | bool
|
!(x == y) |
| os << x | decltype(os)& | 将 x 当前状态的文本表示写入 os
。输出中,相邻的数以一或多个空格字符分隔。若 os 的 fmtflags 未设为
ios_base::dec|ios_base::left
,则行为可能未定义。
|
| is >> v | decltype(is)& | 从 is 读取 v 当前状态的文本表示,满足若先前通过 os <<
x 写入该状态,则 x ==
v 。若 is 的
fmtflags 未设为 ios_base::dec
,则行为可能未定义。
|
标准库
下列标准库设施满足随机数引擎 (随机数引擎 (RandomNumberEngine) ) :
|
(C++11)
|
实现线性同余算法
(类模板) |
|
(C++11)
|
实现梅森缠绕器算法 (类模板) |
|
(C++11)
|
实现带进位减(一种延迟斐波那契)算法
(类模板) |
|
(C++11)
|
舍弃随机数引擎的某些输出 (类模板) |
|
(C++11)
|
将一个随机数引擎的输出打包为指定位数的块 (类模板) |
|
(C++11)
|
以不同顺序发送一个随机数引擎的输出 (类模板) |
下列标准库设施满足均匀随机位生成器 (UniformRandomBitGenerator) 但不满足随机数引擎 (随机数引擎 (RandomNumberEngine) ) :
|
(C++11)
|
使用硬件熵源的非确定随机数生成器 (类) |