命名空间
变体
操作

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

来自 cppreference.cn
 
 
C++ 命名要求
基本
类型属性
全库范围




Container(容器)
容器元素
迭代器 (Iterator)
流 I/O
格式化器
(C++20)
随机数
UniformRandomBitGenerator(均匀随机比特生成器)
(C++11)
并发
(C++11)
Ranges
多维视图
其他

 

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

均匀随机位生成器不打算用作随机数生成器:它们用作随机位的来源(为提高效率而批量生成)。任何均匀随机位生成器都可以插入任何随机数分布中,以获得一个随机数(形式上,一个随机变量)。

目录

[编辑] 要求

类型 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++ 标准。

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

[编辑] 另见

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