类
<random>
std::mt19937
typedef mersenne_twister_engine<uint_fast32_t, 32,624,397,31,0x9908b0df,11,0xffffffff,7,0x9d2c5680,15,0xefc60000,18,1812433253> mt19937;
梅森旋转 19937 生成器 (Mersenne Twister 19937 generator)
一个梅森旋转伪随机生成器,生成 32 位数字,状态大小为 19937 位。
它是 mersenne_twister_engine 的一个特化,具有以下模板参数
参数 | 名称 | 值 |
UIntType | 结果类型 (result type) | uint_fast32_t |
w | 字大小 (word size) | 32 |
n | 状态大小 (state size) | 624 |
m | 移位大小 (shift size) | 397 |
r | 掩码位数 (mask bits) | 31 |
a | 异或掩码 (XOR mask) | 0x9908b0df |
u | 扰码 u (tempering u) | 11 |
d | 扰码 d (tempering d) | 0xffffffff |
s | 扰码 s (tempering s) | 7 |
和 b | 扰码 b (tempering b) | 0x9d2c5680 |
t | 扰码 t (tempering t) | 15 |
c | 扰码 c (tempering c) | 0xefc60000 |
l | 扰码 l (tempering l) | 18 |
f | 初始化乘数 (initialization multiplier) | 1812433253 |
成员类型
以下别名是...的成员类型mt19937:
成员类型 | 定义 | 说明 |
result_type | uint_fast32_t | 生成的数字的类型。 |
成员常量
成员常量 | 定义 | 说明 |
word_size | 32 | 状态序列中每个字的位数。 |
state_size | 624 | 状态序列中的元素数量(递归次数)。 |
shift_size | 397 | 扭转(twist)时用于转换值的移位大小。 |
mask_bits | 31 | 在每次扭转(twist)时标记字分隔点的位数。 |
xor_mask | 0x9908b0df | 在每次扭转(twist)上用作线性函数的异或掩码。 |
tempering_u | 11 | 在生成算法的扰码(tempering)过程中使用的参数 u 的移位大小。 |
tempering_d | 0xffffffff | 在生成算法的扰码(tempering)过程中用作参数 d 的异或掩码。 |
tempering_s | 7 | 在生成算法的扰码(tempering)过程中使用的参数 s 的移位大小。 |
tempering_b | 0x9d2c5680 | 在生成算法的扰码(tempering)过程中用作参数 b 的异或掩码。 |
tempering_t | 15 | 在生成算法的扰码(tempering)过程中使用的参数 t 的移位大小。 |
tempering_c | 0xefc60000 | 在生成算法的扰码(tempering)过程中用作参数 c 的异或掩码。 |
tempering_l | 18 | 在生成算法的扰码(tempering)过程中使用的参数 l 的移位大小。 |
initialization_multiplier | 1812433253 | 当使用单个值作为种子时,用于初始化状态序列的初始化乘数。 |
default_seed | 5489u | 构造或播种时使用的默认种子。 |