Partager via


variate_generator Class

Encapsule un moteur et une distribution.

template<class Engine, class Dist>
    class variate_generator {
public:
    typedef Engine engine_type;
    typedef engine-value-type engine_value_type;
    typedef Dist distribution_type;
    typedef typename Dist::result_type result_type;
    variate_generator(engine_type eng0, distribution_type dist0);
    result_type operator()();
    template<class T>
        result_type operator()(T value);
    engine_value_type& engine();
    const engine_value_type& engine() const;
    distribution_type& distribution();
    const distribution_type& distribution() const;
    result_type min() const;
    result_type max() const;
private:
    Engine eng;             // exposition only
    Dist dist;              // exposition only
    };

Paramètres

  • Engine
    Le type du moteur aléatoire.

  • Dist
    Le type de distribution.

Notes

La classe de modèle décrit un objet qui contient un moteur et une distribution et produit des valeurs en passant l'objet encapsulé du moteur à operator()de l'objet d' distribution .

L'argument template Engine peut être un type Eng, Eng*, ou Eng&, où Eng est un moteur.Le type Eng est le type sous-jacent du moteur.L'objet correspondant du type Eng le est l'objet sous-jacent du moteur.

Le modèle utilise un moteur encapsulée pour correspondre au type des valeurs produites par l'objet d' engine au type de valeurs requises par l'objet d' distribution .operator() du moteur encapsulée retourne des valeurs de type Dist::input_type, générées comme suit :

si Engine::result_type et Dist::input_type sont les deux types intégraux qu'il retourne eng(), converti en type Dist::input_type.

si Engine::result_type et Dist::input_type sont les deux types à virgule flottante qu'il retourne (eng() - eng.min()) / (eng.max() - eng.min()), converti en type Dist::input_type.

si Engine::result_type est un type intégral et Dist::input_type est un type à virgule flottante qu'il retourne (eng() - eng.min()) / (eng.max() - eng.min() + 1), converti en type Dist::input_type.

si Engine::result_type est un type à virgule flottante et Dist::input_type est un type intégral qu'il retourne l' ((eng() - eng.min()) / (eng.max() - eng.min()) * std::numeric_limits<Dist::input_type>::max(), converti en type Dist::input_type.

Configuration requise

en-tête : <random>

l'espace de noms : DST

Voir aussi

Référence

<random>

variate_generator::distribution

variate_generator::distribution_type

variate_generator::engine

variate_generator::engine_type

variate_generator::engine_value_type

variate_generator::operator()

variate_generator::variate_generator