Namespaces
Variants

std:: linear_congruential_engine

From cppreference.net
定义于头文件 <random>
template <

class UIntType,
UIntType a,
UIntType c,
UIntType m

> class linear_congruential_engine ;
(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 ,
48271 , 0 , 2147483647 >
更新的"最小标准",1993年由Park、Miller和Stockmeyer推荐

嵌套类型

类型 定义
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)
比较两个伪随机数引擎的内部状态
(函数)
对伪随机数引擎执行流输入和输出操作
(函数模板)

示例