std::subtract_with_carry_engine
来自cppreference.com
在标头 <random> 定义
|
||
template< class UIntType, |
(C++11 起) | |
subtract_with_carry_engine
是使用带进位减法算法的随机数引擎。
subtract_with_carry_engine
的状态由序列 {X
i} (0 ≤ i <r) 组成,每个 X
i 均在区间 [0, 2w
) 中。
令所有应用到序列的下标都对 r
取余, c
为进位值 0 或 1 。状态迁移按下列方式进行:
- 令 Y=X
i-s-X
i-r-c , - 设置 X
i 为 Y mod 2w
,若 Y<0 则设置c
为 1 ,否则设置为 0 。
下列 typedef 定义拥有二个常用参数集的随机数引擎:
在标头
<random> 定义 | |
类型 | 定义 |
ranlux24_base (C++11)
|
std::subtract_with_carry_engine<std::uint_fast32_t, 24, 10, 24> |
ranlux48_base (C++11)
|
std::subtract_with_carry_engine<std::uint_fast64_t, 48, 5, 12> |
模板形参
UIntType | - | 生成器所生成的结果类型。若它不是 unsigned short 、 unsigned int 、 unsigned long 或 unsigned long long 之一则效果未定义。 |
w | - | 状态序列按位计的字大小, 0 < w <= std::numeric_limits<UIntType>::digits |
s | - | 短延迟 |
r | - | 长延迟,其中 0 < s < r |
成员类型
成员类型 | 定义 |
result_type (C++11)
|
引擎生成的整数类型。若此非无符号整数类型则结果未定义。 |
成员函数
构造与播种 | |
(C++11) |
构造引擎 (公开成员函数) |
(C++11) |
设置引擎的当前状态 (公开成员函数) |
生成 | |
(C++11) |
推进引擎状态并返回生成的值 (公开成员函数) |
(C++11) |
令引擎状态前进指定量 (公开成员函数) |
特征 | |
[静态] |
获取输出范围中的最小可能值 (公开静态成员函数) |
[静态] |
获取输出范围中的最大可能值 (公开静态成员函数) |
非成员函数
(C++11)(C++11)(C++20 中移除) |
比较两个伪随机数引擎的内部状态 (函数) |
(C++11) |
执行伪随机数引擎的流输入和输出 (函数) |
成员常量
constexpr size_t word_size [静态] (C++11) |
模板形参 w ,字大小 (公开静态成员常量) |
constexpr size_t short_lag [静态] (C++11) |
模板形参 s ,短延迟 (公开静态成员常量) |
constexpr size_t long_lag [静态] (C++11) |
模板形参 r ,长延迟 (公开静态成员常量) |
constexpr UIntType default_seed [静态] (C++11) |
常数值 19780503u (公开静态成员常量) |