最終更新日時:
が更新

履歴 編集

class template
<random>

std::subtract_with_carry_engine(C++11)

namespace std {
  template <class UIntType, size_t w, size_t s, size_t r>
  class subtract_with_carry_engine;

  using ranlux24_base = ;
  using ranlux48_base = ;
  using ranlux24      = ;
  using ranlux48      = ;
}

概要

subtract_with_carry_engineクラスは、キャリー付き減算法による擬似乱数生成エンジンである。

キャリー付き減算法は、以下の特徴を持つ:

この生成法は、RANLUX(LUXury RANdom numbers)法の実装にも使われる。RANLUX法は、重複のない独立した乱数列を生成することで知られている。

メンバ関数

構築・シード

名前 説明 対応バージョン
(constructor) コンストラクタ C++11
~subtract_with_carry_engine() = default; デストラクタ C++11
seed シードを設定する C++11

生成

名前 説明 対応バージョン
operator() 擬似乱数を生成する C++11
discard 指定した回数だけ擬似乱数を生成し、内部状態を進める 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

非メンバ関数

名前 説明 対応バージョン
operator== 等値比較 C++11
operator!= 非等値比較 C++11
operator<< ストリームへの出力 C++11
operator>> ストリームからの入力 C++11

#include <iostream>
#include <random>
#include <cstdint>

int main()
{
  std::random_device seed_gen;

  // subtract_with_carry_engineのパラメータ設定済み別名であるranlux24_baseを使用する。
  // ランダムなシードを使用して初期化
  std::ranlux24_base engine(seed_gen());

  for (int i = 0; i < 10; ++i) {
    // 乱数を生成
    std::uint32_t result = engine();

    std::cout << result << std::endl;
  }
}

出力

5880757
13095533
1545433
15249896
3512432
2193500
7368389
13589182
9374747
13701319

バージョン

言語

  • C++11

処理系

参照