C++ 具名要求:均匀随机位生成器 (UniformRandomBitGenerator) (C++11 起)

来自cppreference.com
< cpp‎ | named req


 
 
C++ 具名要求
 

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

均匀随机位生成器的目的并非用做随机数生成器:它们被用作随机位的源(为效率进行批量生成)。任何均匀随机位生成器均可被插入任何随机数分布,以获得随机数(正式而言是随机变量)。

要求

类型 G 在满足以下条件的情况下满足均匀随机位生成器 (UniformRandomBitGenerator)

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

  • G::result_type 合法,并且表示一个无符号整数类型。
  • 以下表达式都合法,并且拥有指定的效果:
(C++20 前)
表达式 类型 要求
G::min()  G::result_type 
  • 返回 Goperator() 能返回的最小值。 
  • 返回值严格小于 G::max()
  • 函数必须是 constexpr 的。
G::max() G::result_type
  • 返回 Goperator() 能返回的最大值。
  • 返回值严格大于 G::min()
  • 函数必须是 constexpr 的。
g() G::result_type
  • 返回闭区间 [G::min()G::max()] 中的值。
  • 具有均摊常数复杂度。

满足以下所有条件:

(C++20 起)

注解

所有随机数引擎 (RandomNumberEngine) 均满足此要求。

标准库

下列标准库设施期待均匀随机位生成器 (UniformRandomBitGenerator) 类型。

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

下列标准库设施满足均匀随机位生成器 (UniformRandomBitGenerator) 而不另外满足随机数引擎 (RandomNumberEngine)

使用硬件熵源的非确定随机数生成器
(类)

参阅

指定类型具备作为均匀随机位生成器的资格
(概念)