std::linear_congruential_engine
来自 cppreference.com
定义在头文件 <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,每个状态都包含一个整数。
实际模数 m
0 的定义如下:
- 如果 m 不为零,m
0 为 m。 - 如果 m 为零,m
0 为 std::numeric_limits<result_type>::max() 加上 1(这意味着 m
0 不需要表示为result_type
)。
linear_congruential_engine
的 转换算法 为 TA(x
i) = (a·x
i+c) mod m
0.
linear_congruential_engine
的 生成算法 为 GA(x
i) = (a·x
i+c) mod m
0.
使用当前状态生成的伪随机数也是后继状态。
[编辑] 预定义特化
以下特化使用两个常用参数集定义随机数引擎
定义在头文件
<random> 中 | |
类型 | 定义 |
minstd_rand0 (C++11) |
std::linear_congruential_engine<std::uint_fast32_t, 16807, 0, 2147483647>1969 年由 Lewis、Goodman 和 Miller 发现,1988 年由 Park 和 Miller 被采纳为“最小标准” |
minstd_rand (C++11) |
std::linear_congruential_engine<std::uint_fast32_t, |
[编辑] 嵌套类型
类型 | 定义 |
result_type
|
UIntType
|
[编辑] 数据成员
constexpr UIntType multiplier [static] |
a (公共静态成员常量) |
constexpr UIntType increment [static] |
c (公共静态成员常量) |
constexpr UIntType modulus [static] |
m (公共静态成员常量) |
constexpr UIntType default_seed [static] |
1u (公共静态成员常量) |
[编辑] 成员函数
构造和播种 | |
(C++11) |
构造引擎 (公有成员函数) |
(C++11) |
设置引擎的当前状态 (公有成员函数) |
生成 | |
(C++11) |
推进引擎的状态并返回生成的数值 (公有成员函数) |
(C++11) |
按指定数量推进引擎的状态 (公有成员函数) |
特性 | |
[静态] (C++11) |
获取输出范围内可能出现的最小值 (公有静态成员函数) |
[静态] (C++11) |
获取输出范围内可能出现的最大值 (公有静态成员函数) |
[编辑] 非成员函数
(C++11)(C++11)(C++20 中已移除) |
比较两个伪随机数引擎的内部状态 (函数) |
(C++11) |
在伪随机数引擎上执行流输入和输出 (函数模板) |
[编辑] 示例
本节内容不完整 原因: 没有示例 |