std::linear_congruential_engine
来自cppreference.com
在标头 <random> 定义
|
||
template< class UIntType, |
(C++11 起) | |
linear_congruential_engine
是基于线性同余生成器的随机数引擎。
模板形参
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, |
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++11) |
推进引擎状态并返回生成的值 (公开成员函数) |
(C++11) |
令引擎状态前进指定量 (公开成员函数) |
特征 | |
[静态] (C++11) |
获取输出范围中的最小可能值 (公开静态成员函数) |
[静态] (C++11) |
获取输出范围中的最大可能值 (公开静态成员函数) |
非成员函数
(C++11)(C++11)(C++20 中移除) |
比较两个伪随机数引擎的内部状态 (函数) |
(C++11) |
执行伪随机数引擎的流输入和输出 (函数模板) |
示例
本节未完成 原因:暂无示例 |