次の方法で共有


discard_block_engine クラス

ベースとなるエンジンから返された値を破棄することによってランダム シーケンスを生成します。

template<class Engine,
    int P, int R>
    class discard_block_engine {
public:
    typedef Engine base_type;
    typedef typename base_type::result_type result_type;
    static const int block_size = P;
    static const int used_block = R;
    discard_block_engine();
    explicit discard_block_engine(const base_type& eng);
    explicit discard_block_engine(result_type x0);
    explicit discard_block_engine(seed_seq& seq);
    void seed();
    void seed(result_type x0);
    void seed(seed_seq& seq);
    const base_type& base() const;
    static const result_type min();
    static const result_type max();
    result_type operator()();
    void discard(unsigned long long count);
private:
    Engine stored_eng;
    int count;
    };

パラメーター

  • Engine
    格納されている乱数エンジンの型。

  • P
    合計ブロック サイズ。

  • R
    使用ブロック サイズ。

解説

このテンプレート クラスは、ベースとなるエンジンから返された値の一部を破棄することによって値を生成する<random>を表します。この複合エンジンは、ベースのエンジンによって連続的に生成された R 個の値を返し、不使用となった P - R 個の値を破棄するというサイクルを繰り返します。エンジンのstateは、stored_eng の状態を初期状態とし、その後は、現在のサイクルの開始以降に operator() が呼び出された回数がエンジンの状態となります。

テンプレートの引数 R の値は、テンプレートの引数 P の値と同じかそれよりも小さくする必要があります。

必要条件

ヘッダー : <random>

名前空間: std

参照

関連項目

<random>

discard_block_engine::base

discard_block_engine::base_type

discard_block_engine::discard

discard_block_engine::discard_block_engine

discard_block_engine::operator()

discard_block_engine::seed