C++ 命名要求: UniformRandomBitGenerator (自 C++11 起)
均匀随机位生成器是一个函数对象,它返回无符号整数值,使得每个可能结果范围内的值具有(理想上)相等的概率。
均匀随机位生成器不打算用作随机数生成器:它们用作随机位的来源(为提高效率而批量生成)。任何均匀随机位生成器都可以插入到任何随机数分布中,以获得随机数(正式地,随机变量)。
要求
如果给定以下条件,类型 G
满足 UniformRandomBitGenerator
T
,G::result_type
命名的类型g
,类型为 G 的值。以下表达式必须有效并具有其指定效果
表达式 | 返回类型 | 要求 |
---|---|---|
G::result_type | T | T 是一个无符号整数类型 |
G::min() | T | 返回 G 的 operator() 可能返回的最小值。该值严格小于 G::max() 。该函数必须是 constexpr 。 |
G::max() | T | 返回 G 的 operator() 可能返回的最大值。该值严格大于 G::min() 。该函数必须是 constexpr 。 |
g() | T | 返回闭区间 [G::min(), G::max()] 中的值。具有分摊常数复杂度。 |
备注
所有 RandomNumberEngines 都满足此要求。
标准库
以下标准库设施需要 UniformRandomBitGenerator 类型。
pub | random_shuffle (直到 C++17) shuffle(C++11) | 随机重新排列范围中的元素 |
pub | generate_canonical(C++11) | 将给定精度的实值均匀分布在 [0, 1) 范围内 |
pub | uniform_int_distribution(C++11) | 生成在指定范围内均匀分布的整数值 |
pub | uniform_real_distribution(C++11) | 生成在指定范围内均匀分布的实数值 |
pub | 所有其他随机数分布 |
以下标准库设施满足 UniformRandomBitGenerator 而不额外满足 RandomNumberEngine
pub | random_device(C++11) | 使用硬件熵源的非确定性随机数生成器 |