std::linear_congruential_engine
来自 cppreference.cn
定义于头文件 <random> |
||
template< class UIntType, |
(自 C++11 起) | |
linear_congruential_engine
是基于 线性同余生成器 (LCG) 的随机数引擎。
目录 |
[编辑] 模板形参
UIntType | - | 生成器生成的结果类型。如果这不是 unsigned short、 unsigned int、 unsigned long 或 unsigned long long 之一,则效果未定义。 |
a | - | 乘数项 |
c | - | 增量项 |
m | - | 模数项 |
当 m 非零时,如果 a >= m 或 c >= m 为 true,则程序是病式的。
[编辑] 生成器属性
linear_congruential_engine
的状态的大小为 1,每个状态由一个整数组成。
实际模数 m0 定义如下
- 如果 m 非零,则 m0 为 m。
- 如果 m 为零,则 m0 为 std::numeric_limits<result_type>::max() 的值加上 1 (这意味着 m0 不需要可表示为
result_type
)。
linear_congruential_engine
的转移算法为 TA(xi) = (a·xi+c) mod m0。
linear_congruential_engine
的生成算法为 GA(xi) = (a·xi+c) mod m0。
用当前状态生成的伪随机数也是后继状态。
[编辑] 预定义特化
以下特化使用两个常用参数集定义了随机数引擎
定义于头文件
<random> | |
类型 | 定义 |
minstd_rand0 (C++11) |
std::linear_congruential_engine<std::uint_fast32_t, 16807, 0, 2147483647>由 Lewis、Goodman 和 Miller 于 1969 年发现,并于 1988 年被 Park 和 Miller 采纳为“最小标准” |
minstd_rand (C++11) |
std::linear_congruential_engine<std::uint_fast32_t, |
[编辑] 嵌套类型
类型 | 定义 |
result_type
|
UIntType
|
[编辑] 数据成员
constexpr UIntType multiplier [静态] |
a (公共静态成员常量) |
constexpr UIntType increment [静态] |
c (公共静态成员常量) |
constexpr UIntType modulus [静态] |
m (公共静态成员常量) |
constexpr UIntType default_seed [静态] |
1u (公共静态成员常量) |
[编辑] 成员函数
构造与播种 | |
构造引擎 (公共成员函数) | |
设置引擎的当前状态 (公共成员函数) | |
生成 | |
推进引擎的状态并返回值 (公共成员函数) | |
将引擎的状态推进指定的量 (公共成员函数) | |
特性 | |
[静态] |
获取输出范围内最小的可能值 (公共静态成员函数) |
[静态] |
获取输出范围内最大的可能值 (公共静态成员函数) |
[编辑] 非成员函数
(C++11)(C++11)(C++20 中移除) |
比较两个伪随机数引擎的内部状态 (函数) |
(C++11) |
对伪随机数引擎执行流输入和输出 (函数模板) |
[编辑] 范例
本节尚不完整 原因:没有范例 |