命名空间
变体
操作

C++ 命名要求: RandomNumberEngine (自 C++11 起)

来自 cppreference.cn
 
 
C++ 命名要求
 

随机数引擎是一个返回无符号整数值的函数对象,使得可能结果范围内的每个值都(理想情况下)具有相等的概率。

任何随机数引擎也是一个 UniformRandomBitGenerator,因此可以插入任何 随机数分布 中,以获得随机数(正式地,是随机变量)。

[编辑] 要求

如果一个类型满足 RandomNumberEngine,则它必须满足 UniformRandomBitGenerator,并且在给定以下类型和值的情况下,必须满足下表中的语义和复杂性要求

类型 定义
E 一个 RandomNumberEngine 类型
T E::result_type
定义
e 类型 E 的一个值
v 类型 E 的一个左值
x, y 类型为 (可能是 const 限定的) E 的值
s 类型 T 的一个值
q 一个 SeedSequence 左值
z 类型为 unsigned long long 的一个值
os 类型为 std::basic_ostream 的特化的一个左值
is 类型为 std::basic_istream 的特化的一个左值
n E 的状态的 大小
TA E转换算法
GA E生成算法
表达式 返回类型 语义 复杂度
E() N/A 创建一个引擎,其初始状态与类型 E 的所有其他默认构造引擎相同。 O(n)
E(x) 创建一个引擎,它与 x 比较相等。 O(n)
E(s) 创建一个引擎,其初始状态由 s 确定。 O(n)
E(q) 创建一个引擎,其初始状态由对 q.generate 的单次调用确定。 与对长度为 n 的序列调用 q.generate 的复杂度相同
e.seed() void 后置条件:e == E() E() 相同
e.seed(s) void 后置条件:e == E(s) E(s) 相同
e.seed(q) void 后置条件:e == E(q) E(q) 相同
e() T e 的状态从 ei 推进到 ei+1 (即 TA(ei)) 并返回 GA(ei) 摊销常数
e.discard(z) void 通过任何等效于连续调用 ze() 的方式,将 e 的状态从 ei 推进到 ei+z 不比连续调用 ze() 的复杂度更差
x == y bool 对于所有正整数 i,如果 x()y() 的第 i 次连续调用返回相同的值,则返回 true。 否则返回 false O(n)
x != y bool !(x == y) O(n)
os << x decltype(os)&  将 fmtflags 设置为 std::ios_base::dec | std::ios_base::left,并将填充字符设置为空格字符,将 x 当前状态的文本表示形式写入 os

后置条件:os 的 fmtflags 和填充字符与之前相同。

O(n)
is >> v decltype(is)& 将 fmtflags 设置为 std::ios_base::dec,从 is 读取 v 当前状态的文本表示形式。 如果遇到错误输入,则确保 v 的状态在操作后保持不变,并调用 is.setstate(std::ios_base::failbit)(这可能会抛出 std::ios_base::failure)。

前置条件:is 提供了一个文本表示形式,该形式先前是使用满足以下所有条件的输出流 pr 写入的

  • is.getloc() == pr.getloc()true
  • std::is_same<decltype(is)::char_type,
                 decltype(pr)::char_type>::value
    true
  • std::is_same<decltype(is)::traits_type,
                 decltype(pr)::traits_type>::value
    true

后置条件:is 的 fmtflags 与之前相同。

O(n)

[编辑] 标准库

以下标准库工具满足 RandomNumberEngine

实现线性同余算法
(类模板) [编辑]
实现梅森旋转算法
(类模板) [编辑]
实现带进位的减法(滞后斐波那契)算法
(类模板) [编辑]
基于计数器的可并行化生成器
(类模板) [编辑]
丢弃随机数引擎的某些输出
(类模板) [编辑]
将随机数引擎的输出打包成指定位数的块
(类模板) [编辑]
以不同的顺序传递随机数引擎的输出
(类模板) [编辑]

以下标准库工具满足 UniformRandomBitGenerator 但不满足 RandomNumberEngine

使用硬件熵源的非确定性随机数生成器
(类) [编辑]