C++ 命名需求: UniformRandomBitGenerator (自 C++11 起)
来自 cppreference.com
统一随机位生成器是一个函数对象,返回无符号整数值,使得可能结果范围内的每个值都具有(理想情况下)相等的概率。
统一随机位生成器并非旨在用作随机数生成器:它们用作随机位的来源(批量生成,以提高效率)。任何统一随机位生成器都可以插入任何 随机数分布 以获得随机数(正式地,随机变量)。
内容 |
[编辑] 需求
如果类型 G
满足 UniformRandomBitGenerator,则
给定 g,类型
|
(直到 C++20) |
表达式 | 类型 | 需求 |
---|---|---|
G::min() | G::result_type |
|
G::max() | G::result_type
|
|
g() | G::result_type
|
|
满足以下所有条件
|
(自 C++20 起) |
[编辑] 说明
所有 RandomNumberEngines 都满足此要求。
[编辑] 标准库
以下标准库设施期望 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) |
指定类型是否满足统一随机位生成器 (概念) |