C++ 具名要求:随机数分布 (RandomNumberDistribution)
来自cppreference.com
                    
                                        
                    
                    
                                                            
                    随机数分布 (RandomNumberDistribution) 是返回服从概率密度函数 p(x) 或离散概率分布 P(x
i) 的随机数的函数对象。
要求
类型 D 满足随机数分布 (随机数分布 (RandomNumberDistribution) ) ,若
给定
-  
T, D::result_type 所指名的类型 -  
P, D::param_type 所指名的类型,它 
- 满足可复制构造 (CopyConstructible)
 - 满足可复制赋值 (CopyAssignable)
 - 满足可相等比较 (EqualityComparable)
 -  拥有一个构造函数,接收的参数与 
D的接收与分布参数相对应的参数的构造函数等同。 -  拥有成员函数,其名称、类型、语义与 
D的每个返回分布参数的成员函数等同。 - 声明成员 typedef using distribution_type = D;
 
-  
d,D类型的值 -  
x与y,D类型的(可能 const 的)值。 -  
p,P类型的(可能 const 的)值 -  
g、g1、g2,满足均匀随机位生成器 (UniformRandomBitGenerator) 的类型左值 -  
os, std::basic_ostream 特化的左值 -  
is, std::basic_istream 特化的左值 
下列表达式必须合法且拥有其指定的效应
| 表达式 | 类型 | 注意 | 复杂度 | 
|---|---|---|---|
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  | 
x 的 operator() 潜在返回值上的最大下界,由 x 的参数的当前值确定 | 
常数 | 
x.max()  | 
 T  | 
x 的 operator() 潜在返回值上的最小上界,由 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 的格式化标志。数据必须用带相同本地环境、 CharT 和 Traits 流模板形参的流写入,否则行为未定义。若遇到坏的输入,则调用 is.setstate(std::ios::failbit) ,它可以抛出 std::ios_base::failure 。该情况下不更改 d 。 | 
注意
分布对象的参数可用 d.param(p) 永久更改,或用 d(g,p) 只在单次 operator() 调用期间更改。
调用分布的 const 成员函数和 os << d 不影响重复 d(g) 所产生的数列。
标准库
下列标准库组件满足随机数分布 (RandomNumberDistribution)
|    (C++11)  | 
  产生在一个范围上均匀分布的整数值  (类模板)  | 
|    (C++11)  | 
  产生在一个范围上均匀分布的实数值  (类模板)  | 
|    (C++11)  | 
  产生伯努利分布上的 bool 值。  (类)  | 
|    (C++11)  | 
  产生二项分布上的整数值。  (类模板)  | 
|   产生负二项分布上的整数值。  (类模板)  | |
|    (C++11)  | 
  产生几何分布上的整数值。  (类模板)  | 
|    (C++11)  | 
  产生泊松分布上的整数值。  (类模板)  | 
|    (C++11)  | 
  产生指数分布上的实数值。  (类模板)  | 
|    (C++11)  | 
  产生 Γ 分布上的实数值  (类模板)  | 
|    (C++11)  | 
  产生威布尔分布上的实数值。  (类模板)  | 
|    (C++11)  | 
  产生极值分布上的实数值。  (类模板)  | 
|    (C++11)  | 
  产生标准正态(高斯)分布上的实数值。  (类模板)  | 
|    (C++11)  | 
  产生对数正态分布上的实数值。  (类模板)  | 
|    (C++11)  | 
  产生 χ2 分布上上的实数值。  (类模板)  | 
|    (C++11)  | 
  产生柯西分布上的实数值。  (类模板)  | 
|    (C++11)  | 
  产生费舍尔 F 分布上的实数值。  (类模板)  | 
|    (C++11)  | 
  产生学生 t 分布上的实数值。  (类模板)  | 
|    (C++11)  | 
  产生离散分布上的随机整数。  (类模板)  | 
|   产生分布在常子区间上的实数值。  (类模板)  | |
|   产生分布在定义的子区间上的实数值。  (类模板)  |