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++ 标准。
缺陷报告 | 应用于 | 发布时的行为 | 正确的行为 |
---|---|---|---|
LWG 2154 (P0898R3) |
C++11 | 不清楚 G::min() 和 G::max() 是否要求是常量表达式[1] |
需要 |
- ↑ 这些表达式的时间复杂度要求在 C++20 之前是“编译时”。措辞含糊不清,因为“编译时时间复杂度”可以解释为“可以在编译时求值”和“时间复杂度可以在编译时确定”两种含义。
[编辑] 另见
(C++20) |
指定类型是否符合统一随机位生成器 (概念) |