Namespaces
Variants

C++ named requirements: RandomNumberDistribution (since C++11)

From cppreference.net
C++ named requirements

一个 RandomNumberDistribution 是返回随机数的函数对象,这些随机数遵循 概率密度函数 p(x) 离散概率分布 P(x i )

要求

类型 D 满足 RandomNumberDistribution

给定

  • T ,由 D :: result_type 命名的类型
  • P ,由 D :: param_type 命名的类型
  • 满足 CopyConstructible
  • 满足 CopyAssignable
  • 满足 EqualityComparable
  • 具有与 D 的每个构造函数参数完全对应的构造函数
  • 具有与 D 中每个返回分布参数的成员函数名称、类型和语义完全相同的成员函数
  • 声明成员类型别名 using distribution_type = D ;

以下表达式必须有效并具有其指定效果

表达式 类型 说明 复杂度
D::result_type T 一个 算术类型 编译时
D::param_type P 编译时
D() 创建与任何其他默认构造的 D 无法区分的分布 常数
D(p) 创建与直接通过构造 p 所用值构造的 D 无法区分的分布 p 的构造相同
d.reset() void 重置分布的内部状态。对 d 的下一次 operator() 调用将不依赖于 reset() 之前任何引擎生成的值 常数
x.param() P 返回满足 D ( p ) . param ( ) == p p 不差于 D(p)
d.param(p) void 后置条件: d. param ( ) == p 不差于 D(p)
d(g) T 使用相同 g 连续调用此函数返回的数值序列,将按照由 d.param() 参数化的分布进行随机分布 g 调用次数的摊还常数
d(g,p) T 使用相同 g 连续调用此函数返回的数值序列,将按照由 p 参数化的分布进行随机分布 g 调用次数的摊还常数
x.min() T 根据 x 参数的当前值确定的, x operator() 可能返回值的最小下界 常数
x.max() T 根据 x 参数的当前值确定的, x operator() 可能返回值的最大上界 常数
x == y bool 建立等价关系。当 x. param ( ) == y. param ( ) 且只要 g1 == g2 ,通过重复调用 x ( g1 ) y ( g2 ) 生成的未来无限值序列将相等时,返回 true 常数
x != y bool !(x == y) 常数
os << x os 类型的引用 将分布参数和内部状态的文本表示写入 os os 的格式化标志和填充字符保持不变
is >> d is 类型的引用 使用从 is 读取的数据恢复分布参数和内部状态。 is 的格式化标志保持不变。数据必须使用具有相同区域设置、 CharT Traits 流模板参数的流写入,否则行为未定义。如果遇到错误输入,将调用 is. setstate ( std :: ios :: failbit ) ,可能抛出 std::ios_base::failure 。此种情况下 d 保持不变

注释

分布对象的参数可以通过两种方式修改:永久性修改使用 d. param ( p ) ,或仅在下一次 operator() 调用期间临时修改使用 d ( g,p )

对分布的const成员函数的调用以及 os << d 不会影响通过重复调用 d ( g ) 所产生的数字序列。

标准库

以下标准库组件满足 RandomNumberDistribution

在范围内均匀生成整数值
(类模板)
在范围内均匀生成实数值
(类模板)
基于 伯努利分布 生成 bool
(类)
基于 二项分布 生成整数值
(类模板)
基于 负二项分布 生成整数值
(类模板)
基于 几何分布 生成整数值
(类模板)
基于 泊松分布 生成整数值
(类模板)
基于 指数分布 生成实数值
(类模板)
基于 伽马分布 生成实数值
(类模板)
基于 威布尔分布 生成实数值
(类模板)
基于 极值分布 生成实数值
(类模板)
基于 标准正态(高斯)分布 生成实数值
(类模板)
基于 对数正态分布 生成实数值
(类模板)
基于 卡方分布 生成实数值
(类模板)
基于 柯西分布 生成实数值
(类模板)
基于 F分布 生成实数值
(类模板)
基于 t分布 生成实数值
(类模板)
基于离散分布生成整数值
(类模板)
在常量子区间上生成实数值
(类模板)
在定义子区间上生成实数值
(类模板)