std:: linear_congruential_engine
|
定义于头文件
<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
(公共静态成员常量) |
成员函数
构造与播种 |
|
|
构造引擎
(公开成员函数) |
|
|
设置引擎的当前状态
(公开成员函数) |
|
生成 |
|
|
推进引擎状态并返回生成值
(公开成员函数) |
|
|
按指定量推进引擎状态
(公开成员函数) |
|
特性 |
|
|
[static]
|
获取输出范围中的最小可能值
(公开静态成员函数) |
|
[static]
|
获取输出范围中的最大可能值
(公开静态成员函数) |
非成员函数
|
(C++11)
(C++11)
(removed in C++20)
|
比较两个伪随机数引擎的内部状态
(函数) |
|
(C++11)
|
对伪随机数引擎执行流输入和输出操作
(函数模板) |
示例
|
本节内容不完整
原因:缺少示例 |