命名空间
变体
操作

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

来自 cppreference.cn
 
 
C++ 命名要求
随机数
(C++11)
UniformRandomBitGenerator
(C++11)
并发
(C++11)
(C++11)
(C++11)
(C++14)
(C++11)
(C++11)
(C++17)
(C++14)
范围
多维视图
(C++23)
(C++23)
其他
(C++11)
(C++11)
(C++11)
(C++11)

 

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

均匀随机位生成器不旨在用作随机数生成器:它们用作随机位的来源(批量生成,以提高效率)。任何均匀随机位生成器都可以插入任何随机数分布中,以获得随机数(正式地,随机变量)。

目录

[[编辑]] 要求

如果类型 G 满足 UniformRandomBitGenerator,则

给定类型 G 的值 g,则满足以下所有条件

  • G::result_type 是有效的,并且表示一个无符号整数类型。
  • 以下表达式必须有效并且具有其指定的效应
(直到 C++20)
 表达式  类型 要求
G::min() G::result_type 
  • 产生 Goperator() 可能返回的最小值。 
  • 结果值严格小于 G::max()
  • 该表达式必须是常量表达式。
G::max() G::result_type
  • 产生 Goperator() 可能返回的最大值。
  • 结果值严格大于 G::min()
  • 该表达式必须是常量表达式。
g() G::result_type
  • 返回闭区间 [G::min()G::max()] 中的值。
  • 具有分摊常数复杂度。

满足以下所有条件

(自 C++20 起)

[[编辑]] 注释

所有 RandomNumberEngine 都满足此要求。

[[编辑]] 标准库

以下标准库工具需要 UniformRandomBitGenerator 类型。

(直到 C++17)(C++11)
随机重新排序范围内的元素
(函数模板) [[编辑]]
(C++17)
从序列中选择 N 个随机元素
(函数模板) [[编辑]]
[01) 范围内均匀分布给定精度的实数值
(函数模板) [[编辑]]
生成在一定范围内均匀分布的整数值
(类模板) [[编辑]]
生成在一定范围内均匀分布的实数值
(类模板) [[编辑]]
所有其他随机数分布

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

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

[[编辑]] 缺陷报告

以下行为变更缺陷报告被追溯应用于先前发布的 C++ 标准。

DR 应用于 已发布行为 正确行为
LWG 2154
P0898R3
C++11 不清楚是否 G::min()G::max()
需要是常量表达式[1]
必需
  1. 在 C++20 之前,这些表达式的时间复杂度要求为“编译时”。措辞含糊不清,因为“编译时时间复杂度”可以解释为“可以在编译时评估”和“时间复杂度可以在编译时确定”。

[[编辑]] 参见

指定类型是否符合均匀随机位生成器的条件
(概念) [[编辑]]