class template
std::subtract_with_carry_engine(C++11)
概要
subtract_with_carry_engine
クラスは、キャリー付き減算法による擬似乱数生成エンジンである。
テンプレートパラメータの意味は以下の通り:
UIntType
: 生成する符号なし整数の型。
w
: ワードサイズ。0 < w <=std::numeric_limits<UIntType>::digits
でなければならない。
s
: 短いラグ。0 < s < r
でなければならない。
r
: 長いラグ。
キャリー付き減算法は、以下の特徴を持つ:
- メルセンヌ・ツイスターより周期が短い(10171)が軽量。
- シードを系統的に選ぶ (例えばスレッド ID) と、特に初期において生成した値の間に線型の相関 (nearly affine dependence) がみられる。これを避けるには
この生成法は、RANLUX (LUXury RANdom numbers) 法の実装にも使われる。
メンバ関数
構築・シード
名前 |
説明 |
対応バージョン |
(constructor) |
コンストラクタ |
C++11 |
~subtract_with_carry_engine() = default; |
デストラクタ |
C++11 |
seed |
シードを設定する |
C++11 |
生成
静的メンバ関数
エンジンの特性
名前 |
説明 |
対応バージョン |
min |
生成し得る値の最小値を取得する |
C++11 |
max |
生成し得る値の最大値を取得する |
C++11 |
メンバ型
型 |
説明 |
対応バージョン |
result_type |
擬似乱数生成結果の符号なし整数型 UIntType 。 |
C++11 |
メンバ定数
定数 |
説明 |
対応バージョン |
static constexpr size_t word_size |
ワードサイズ。状態シーケンス内での各ワードのビット数。テンプレートパラメータw 。 |
C++11 |
static constexpr size_t short_lag |
短いラグ。進める要素数。テンプレートパラメータs 。 |
C++11 |
static constexpr size_t long_lag |
長いラグ。オペランドの値間の距離。テンプレートパラメータr 。 |
C++11 |
static constexpr result_type default_seed |
デフォルトのシード値。19780503u |
C++11 |
static constexpr uint_least32_t default_seed |
デフォルトのシード値。19780503u |
C++26 |
非メンバ関数
例
出力
5880757
13095533
1545433
15249896
3512432
2193500
7368389
13589182
9374747
13701319
バージョン
言語
処理系
- Clang:
- GCC: 4.7.2 ✅
- ICC:
- Visual C++: 2010 ✅, 2012 ✅, 2013 ✅, 2015 ✅, 2017 ✅
- 2008には、
std::tr1::subtract_with_carry
が存在する。
参照