std::subtract_with_carry_engine

来自cppreference.com
< cpp‎ | numeric‎ | random
 
 
 
 
 
在标头 <random> 定义
template<

    class UIntType,
    std::size_t w, std::size_t s, std::size_t r

> class subtract_with_carry_engine;
(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 shortunsigned intunsigned longunsigned 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++20 中移除)
比较两个伪随机数引擎的内部状态
(函数)
执行伪随机数引擎的流输入和输出
(函数)

成员常量

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
(公开静态成员常量)