命名空间
变体
操作

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

来自 cppreference.com
 
 
C++ 命名需求
 

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

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

内容

[编辑] 需求

如果类型 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 起)

[编辑] 说明

所有 RandomNumberEngines 都满足此要求。

[编辑] 标准库

以下标准库设施期望 UniformRandomBitGenerator 类型。

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

以下标准库设施满足 UniformRandomBitGenerator,而不额外满足 RandomNumberEngine

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

[编辑] 缺陷报告

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

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

[编辑] 另请参见

指定类型是否满足统一随机位生成器
(概念) [编辑]