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

来自cppreference.com
< cpp‎ | named req


 
 
C++ 具名要求
 

{{named req|RandomNumberDistribution}是返回服从概率密度函数 p(x)离散概率分布 P(x
i
)
的随机数的函数对象。

要求

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

给定

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

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

表达式 类型 注意 复杂度
D::result_type T 算术类型 编译时
D::param_type P 编译时
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() T xoperator() 潜在返回值的最大下界,由 x 的参数的当前值确定 常数
x.max() T xoperator() 潜在返回值的最小上界,由 x 的参数的当前值确定 常数
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 的格式化标志。数据必须是用带相同本地环境、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 分布上的实数值。
(类模板)
产生离散分布上的随机整数。
(类模板)
产生分布在常子区间上的实数值。
(类模板)
产生分布在定义的子区间上的实数值。
(类模板)