shuffle_order_engine Class

Génère une séquence aléatoire en principale de nouveau les valeurs retournées de son moteur de base.

template<class Engine,
    size_t K>
    class shuffle_order_engine {
public:
    typedef Engine base_type;
    typedef typename base_type::result_type result_type;
    static constexpr size_t table_size = K;
    shuffle_order_engine();
    explicit shuffle_order_engine(const base_type& eng);
    explicit shuffle_order_engine(result_type x0);
    explicit shuffle_order_engine(seed_seq& seq);
    void seed();
    void seed(result_type x0);
    void seed(seed_seq& seq);
    const base_type& base() const;
    static constexpr result_type min();
    static constexpr result_type max();
    result_type operator()();
    void discard(unsigned long long count);
private:
    Engine stored_eng;
    result_type stored_arr[K];
    result_type stored_y;
    };

Paramètres

  • Engine
    Le type enregistré du moteur.

  • K
    Le paramètre du moteur de K.

Notes

Cette classe de modèle décrit moteur compound qui produit des valeurs en principale de nouveau les valeurs retournées par le moteur de base.Chaque constructeur remplit tableau stored_arr de valeurs d' K retournées par le moteur de base.Elle stockez ensuite dans stored_y qu'une valeur supplémentaire retourné par le moteur de base.Chaque élément de la séquence générée est ensuite obtenu à partir de stored_y, après quoi :

  • L'index J de tableau est calculé comme K * (stored_y - min()) / (max() - min() + 1).

  • stored_y est remplacé par stored_arr[J].

  • stored_arr[j] est remplacé par stored_eng().

L'état du moteur est l'état d' stored_eng, suivi des éléments de K d' stored_arr, suivis d' stored_y.

La valeur de l'argument template K doit être supérieur à zéro.

Configuration requise

en-tête : <random>

l'espace de noms : DST

Voir aussi

Référence

<random>

shuffle_order_engine::base

shuffle_order_engine::base_type

shuffle_order_engine::discard

shuffle_order_engine::operator()

shuffle_order_engine::seed

shuffle_order_engine::shuffle_order_engine