最終更新日時: 2025年10月23日 01時15分43秒 (JST)
Akira Takahashi が更新

履歴 編集

type-alias
<random>

# std::default_random_engine(C++11)

    namespace std {
      using default_random_engine = implementation-defined;
    }

## 概要

擬似乱数生成エンジンには、パフォーマンス、サイズ、品質といった、多くの特性による選択肢がある。
しかし、非専門家がこれらを正しく使い分けるのは難しいだろう。
`default_random_engine`は、非専門用途で十分な品質の擬似乱数生成エンジンを別名定義したものである。

## 備考

以下、確認できた環境ごとのエンジンである。バージョンによって変更される可能性があるため参考までに。

ライブラリ | エンジン
--- | ---
Visual C++ 2012 | `mt19937`
GCC 4.8(libstdc++) | `minstd_rand0`
Clang 3.4(libc++) | `minstd_rand`

## 例

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

    int main()
    {
      std::random_device seed_gen;
      std::uint32_t seed = seed_gen();
      std::default_random_engine engine(seed);

      std::uniform_int_distribution<> dist(0, 3);

      for (int i = 0; i < 10; ++i) {
        int result = dist(engine);
        std::cout << result << std::endl;
      }
    }

### 出力例

    1
    3
    3
    2
    0
    1
    0
    2
    0
    3

## 参照

- N2478 A Proposal to Add `typedef default_random_engine` to C++0X