C++ 具名要求:随机数分布 (RandomNumberDistribution) (C++11 起)

来自cppreference.com
< cpp‎ | named req


 
 
C++ 具名要求
 

随机数分布 (RandomNumberDistribution) 是返回服从概率密度函数 p(x)离散概率分布 P(xi) 的随机数的函数对象。

要求

类型 D 满足随机数分布 (RandomNumberDistribution) ,若

给定

  • TD::result_type 所指名的类型
  • PD::param_type 所指名的类型,它

下列表达式必须合法且拥有其指定的效应

表达式类型注意复杂度
D::result_typeT算术类型编译时
D::param_typeP编译时
D()创建与其他默认构造的 D 不可区分的分布常数
D(p)创建与直接使用构造 p 时所用的值构造的 D 不可区分的分布p 的构造
d.reset()void重置分布为初始状态。d 下次对 operator() 的调用将不依赖任何引擎在 reset() 调用之前产生的值常数
x.param()P返回 p,满足 D(p).param() == 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()Txoperator() 潜在返回值的最大下界,由 x 的参数的当前值确定常数
x.max()Txoperator() 潜在返回值的最小上界,由 x 的参数的当前值确定常数
x == ybool建立等价关系。若 x.param() == y.param(),且只要 g1 == g2,将来重复调用 x(g1)y(g2) 所生成的无限数列就相等,则返回 true常数
x != ybool!(x == y)常数
os << xos 类型的引用将分布参数和内部状态的文本表示写入到 os。不更改 os 的格式化标志和填充字符
is >> dis 类型的引用从读取自 is 的数据还原分布参数和内部状态。不更改 is 的格式化标志。数据必须是用带相同本地环境、CharTTraits 流模板形参的流所写入的,否则行为未定义。若遇到坏的输入,则调用 is.setstate(std::ios::failbit),它可能抛出 std::ios_base::failure。该情况下不更改 d

注解

分布对象的参数可用 d.param(p) 永久更改,或用 d(g,p) 只在单次 operator() 调用期间更改。

调用分布的 const 成员函数和 os << d 不影响重复 d(g) 所产生的数列。

标准库

下列标准库组件满足随机数分布 (RandomNumberDistribution)

产生在范围内均匀分布的整数
(类模板)
产生在范围内均匀分布的实数
(类模板)
产生伯努利分布上的 bool
(类)
产生二项分布上的整数
(类模板)
产生负二项分布上的整数
(类模板)
产生几何分布上的整数
(类模板)
产生泊松分布上的整数
(类模板)
产生指数分布上的实数
(类模板)
产生Γ 分布上的实数
(类模板)
产生威布尔分布上的实数
(类模板)
产生极值分布上的实数
(类模板)
产生标准正态(高斯)分布上的实数
(类模板)
产生对数正态分布上的实数
(类模板)
产生χ2 分布上的实数
(类模板)
产生柯西分布上的实数
(类模板)
产生费舍尔 F 分布上的实数
(类模板)
产生学生 t 分布上的实数
(类模板)
产生离散分布上的整数
(类模板)
产生分布在常子区间上的实数
(类模板)
产生分布在定义的子区间上的实数
(类模板)