std::mersenne_twister_engine

来自cppreference.com
< cpp‎ | numeric‎ | random
 
 
 
 
std::mersenne_twister_engine
 
定义于头文件 <random>
template<

    class UIntType,
    std::size_t w, std::size_t n, std::size_t m, std::size_t r,
    UIntType a, std::size_t u, UIntType d, std::size_t s,
    UIntType b, std::size_t t,
    UIntType c, std::size_t l, UIntType f

> class mersenne_twister_engine;
(C++11 起)

mersenne_twister_engine 是基于梅森缠绕器算法的随机数生成器。它产生高质量 UIntType 类型的区间 [0, 2w
-1]
上的无符号整数随机数。

下列类型别名定义拥有二个常用参数集的随机数引擎:

定义于头文件 <random>
类型 定义
mt19937(C++11)

std::mersenne_twister_engine<std::uint_fast32_t, 32, 624, 397, 31,
                             0x9908b0df, 11,
                             0xffffffff, 7,
                             0x9d2c5680, 15,
                             0xefc60000, 18, 1812433253>

32 位梅森缠绕器,由松本与西村设计于 1998

mt19937_64(C++11)

std::mersenne_twister_engine<std::uint_fast64_t, 64, 312, 156, 31,
                             0xb5026f5aa96619e9, 29,
                             0x5555555555555555, 17,
                             0x71d67fffeda60000, 37,
                             0xfff7eee000000000, 43, 6364136223846793005>

64 位梅森缠绕器,由松本与西村设计于 2000

成员类型

成员类型 定义
result_type(C++11) 引擎所生成的整数类型。若此非无符号整数类型则结果未定义。

成员函数

构造与播种
构造引擎
(公开成员函数)
(C++11)
设置引擎的当前状态
(公开成员函数)
生成
推进引擎状态并返回生成的值
(公开成员函数)
(C++11)
令引擎状态前进指定量
(公开成员函数)
特征
[静态]
获取输出范围中的最小可能值
(公开静态成员函数)
[静态]
获取输出范围中的最大可能值
(公开静态成员函数)

非成员函数

(C++11)(C++11)(C++20 中移除)
比较两个伪随机数引擎的内部状态
(函数)
执行伪随机数引擎的流输入和输出
(函数)

成员常量

constexpr size_t word_size
[静态] (C++11)
模板形参 w ,确定引擎所生成的值范围。
(公开静态成员常量)
constexpr size_t state_size
[静态] (C++11)
模板形参 n 。引擎状态是 nUIntType
(公开静态成员常量)
constexpr size_t shift_size
[静态] (C++11)
模板形参 m
(公开静态成员常量)
constexpr size_t mask_bits
[静态] (C++11)
模板形参 r ,亦称为缠绕值。
(公开静态成员常量)
constexpr UIntType xor_mask
[静态] (C++11)
模板形参 a ,条件性异或掩码。
(公开静态成员常量)
constexpr size_t tempering_u
[静态] (C++11)
模板形参 u ,位扰乱(均化)矩阵的第一组分
(公开静态成员常量)
constexpr UIntType tempering_d
[静态] (C++11)
模板形参 d ,位扰乱(均化)矩阵的第二组分
(公开静态成员常量)
constexpr size_t tempering_s
[静态] (C++11)
模板形参 s ,位扰乱(均化)矩阵的第三组分
(公开静态成员常量)
constexpr UIntType tempering_b
[静态] (C++11)
模板形参 b ,位扰乱(均化)矩阵的第四组分
(公开静态成员常量)
constexpr size_t tempering_t
[静态] (C++11)
模板形参 t ,位扰乱(均化)矩阵的第五组分
(公开静态成员常量)
constexpr UIntType tempering_c
[静态] (C++11)
模板形参 c ,位扰乱(均化)矩阵的第六组分
(公开静态成员常量)
constexpr size_t tempering_l
[静态] (C++11)
模板形参 l ,位扰乱(均化)矩阵的第七组分
(公开静态成员常量)
constexpr UIntType initialization_multiplier
[静态] (C++11)
模板形参 f
(公开静态成员常量)
constexpr UIntType default_seed
[静态] (C++11)
常数值 5489u
(公开静态成员常量)

注解

第 10000 次连续调用默认构造的 std::mt19937 应生成值 4123659995

第 10000 次连续调用默认构造的 std::mt19937_64 应生成值 9981545732273789042