C++ 具名要求:随机数引擎 (RandomNumberEngine)
来自cppreference.com
                    
                                        
                    
                    
                                                            
                    随机数引擎是函数对象,返回无符号整数值,它使得可能结果范围中的每个值拥有(理想的)相等概率。
任何随机数引擎亦为均匀随机位生成器 (UniformRandomBitGenerator) ,从而可能插入任何随机数分布,以获得随机数(正式而言是随机变量)。
要求
满足均匀随机位生成器 (UniformRandomBitGenerator) 的类型 E 会另外满足随机数引擎 (随机数引擎 (RandomNumberEngine) ) ,若给定
-  
T,E::result_type所指名的类型 -  
s,T类型值 -  
e,E类型的非 const 值 -  
v,E类型左值 -  
x与y,E类型的可能为 const 的值 -  
q,某满足种子序列 (SeedSequence) 的类型的左值 -  
z,unsigned long long类型值 -  
os,输出流 -  
is,输入流 
而下列表达式合法并拥有其指定的效果:
| 表达式 | 返回类型 | 要求 | 
|---|---|---|
| E() |  创建引擎,其状态与所有其他默认构造的 E 类型引擎相同。
 | |
| E(x) |  创建引擎,其状态与 x 的相同。
 | |
| E(s) |  创建引擎,其初始状态为 s 所确定。
 | |
| E(q) |  创建引擎,其初始状态以单次调用 q.generate 确定。
 | |
| e.seed() |  void
 | 
设置 e == E() 。 | 
| e.seed(s) |  void
 | 
设置 e == E(s) 。 | 
| e.seed(q) |  void
 | 
设置 e == E(q) 。 | 
| e() |  T
 | 
返回闭区间 [E::min(), E::max()] 中的值。拥有均摊常数复杂度。 | 
| e.discard(z) |  void
 | 
 令 e 的状态前进,如同通过 z 次连续调用 e() 。
 | 
| x == y |  bool
 | 
 若 x 与 y 在相同状态(满足将来对 x() 和 y() 的重复调用将产生等同的数列)则为 true 。否则为 false 。
 | 
| x != y |  bool
 | 
!(x == y) | 
| os << x | decltype(os)& |  将 x 当前状态的文本表示写入 os 。输出中,相邻的数以一或多个空格字符分隔。若 os 的 fmtflags 未设为 ios_base::dec|ios_base::left ,则行为可能未定义。
 | 
| is >> v | decltype(is)& |  从 is 读取 v 当前状态的文本表示,满足若先前通过 os << x 写入该状态,则 x == v 。若 is 的 fmtflags 未设为 ios_base::dec ,则行为可能未定义。
 | 
标准库
下列标准库设施满足随机数引擎 (随机数引擎 (RandomNumberEngine) ) :
|    (C++11)  | 
  实现线性同余算法  (类模板)  | 
|    (C++11)  | 
  实现梅森缠绕器算法  (类模板)  | 
|    (C++11)  | 
  实现带进位减(一种延迟斐波那契)算法  (类模板)  | 
|    (C++11)  | 
  舍弃随机数引擎的某些输出  (类模板)  | 
|    (C++11)  | 
  将一个随机数引擎的输出打包为指定位数的块  (类模板)  | 
|    (C++11)  | 
  以不同顺序发送一个随机数引擎的输出  (类模板)  | 
下列标准库设施满足均匀随机位生成器 (UniformRandomBitGenerator) 但不满足随机数引擎 (随机数引擎 (RandomNumberEngine) ) :
|    (C++11)  | 
  使用硬件熵源的非确定随机数生成器  (类)  |