C++ named requirements: UniformRandomBitGenerator (since C++11)
均匀随机位生成器是一种函数对象,它返回无符号整数值,使得可能结果范围内的每个值(理想情况下)具有相等的概率。
均匀随机比特生成器并非设计用作随机数生成器:它们被用作随机比特源(为效率起见批量生成)。任何均匀随机比特生成器都可以接入任意 随机数分布 来获取随机数(形式化称为随机变量)。
目录 |
要求
类型
G
满足
UniformRandomBitGenerator
若
|
给定
g
,一个类型为
|
(until C++20) |
| 表达式 | 类型 | 要求 |
|---|---|---|
| G :: min ( ) |
G::result_type
|
|
| G :: max ( ) |
G::result_type
|
|
| g ( ) |
G::result_type
|
|
|
满足以下所有条件:
|
(since C++20) |
注释
所有 随机数引擎 均满足此要求。
标准库
以下标准库设施要求使用 UniformRandomBitGenerator 类型。
|
(until C++17)
(C++11)
|
随机重排范围内的元素
(函数模板) |
|
(C++17)
|
从序列中选择 N 个随机元素
(函数模板) |
|
(C++11)
|
在区间
[
0
,
1
)
上均匀生成给定精度的实数值
(函数模板) |
|
(C++11)
|
生成在范围内均匀分布的整数值
(类模板) |
|
(C++11)
|
生成在范围内均匀分布的实数值
(类模板) |
| 所有其他随机数分布 | |
以下标准库设施满足 UniformRandomBitGenerator 要求,但不同时满足 RandomNumberEngine 要求:
|
(C++11)
|
使用硬件熵源的非确定性随机数生成器
(类) |
缺陷报告
以下行为变更缺陷报告被追溯应用于先前发布的C++标准。
| 缺陷报告 | 应用于 | 发布时的行为 | 正确行为 |
|---|---|---|---|
|
LWG 2154
( P0898R3 ) |
C++11 |
未明确说明
G
::
min
(
)
和
G
::
max
(
)
是否需要为常量表达式 [1] |
要求必须为常量表达式 |
- ↑ 在C++20之前,这些表达式的时间复杂度要求是“编译时”的。该措辞存在歧义,因为“编译时时间复杂度”既可以解释为“可在编译时求值”,也可以解释为“时间复杂度可在编译时确定”。
参见
|
(C++20)
|
指定类型符合均匀随机比特生成器的要求
(概念) |