C++ 命名要求: UniformRandomBitGenerator (自 C++11 起)
来自 cppreference.cn
均匀随机位生成器是一个返回无符号整数值的函数对象,使得可能结果范围内的每个值都具有(理想情况下)相等的概率。
均匀随机位生成器不旨在用作随机数生成器:它们用作随机位的来源(批量生成,以提高效率)。任何均匀随机位生成器都可以插入任何随机数分布中,以获得随机数(正式地,随机变量)。
目录 |
[[编辑]] 要求
如果类型 G
满足 UniformRandomBitGenerator,则
给定类型
|
(直到 C++20) |
表达式 | 类型 | 要求 |
---|---|---|
G::min() | G::result_type |
|
G::max() | G::result_type
|
|
g() | G::result_type
|
|
满足以下所有条件
|
(自 C++20 起) |
[[编辑]] 注释
所有 RandomNumberEngine 都满足此要求。
[[编辑]] 标准库
以下标准库工具需要 UniformRandomBitGenerator 类型。
(直到 C++17)(C++11) |
随机重新排序范围内的元素 (函数模板) |
(C++17) |
从序列中选择 N 个随机元素 (函数模板) |
(C++11) |
在 [ 0, 1) 范围内均匀分布给定精度的实数值(函数模板) |
(C++11) |
生成在一定范围内均匀分布的整数值 (类模板) |
(C++11) |
生成在一定范围内均匀分布的实数值 (类模板) |
所有其他随机数分布 |
以下标准库工具满足 UniformRandomBitGenerator,但不额外满足 RandomNumberEngine
(C++11) |
使用硬件熵源的非确定性随机数生成器 (类) |
[[编辑]] 缺陷报告
以下行为变更缺陷报告被追溯应用于先前发布的 C++ 标准。
DR | 应用于 | 已发布行为 | 正确行为 |
---|---|---|---|
LWG 2154 (P0898R3) |
C++11 | 不清楚是否 G::min() 和 G::max() 需要是常量表达式[1] |
必需 |
- ↑ 在 C++20 之前,这些表达式的时间复杂度要求为“编译时”。措辞含糊不清,因为“编译时时间复杂度”可以解释为“可以在编译时评估”和“时间复杂度可以在编译时确定”。
[[编辑]] 参见
(C++20) |
指定类型是否符合均匀随机位生成器的条件 (概念) |