Condividi tramite


variate_generator Class

Esegue il wrapping di un motore e una distribuzione.

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
    };

Parametri

  • Engine
    Il tipo del motore casuale.

  • Dist
    Il tipo di distribuzione.

Note

La classe modello descrive un oggetto che utilizza un motore e di distribuzione e produce valori passando l'oggetto di cui è stato eseguito il wrapping del motore in operator()dell'oggetto distribution.

Un argomento di template Engine può essere un tipo Eng, Eng*, o Eng&, in cui Eng è un motore.Il tipo Eng è il tipo sottostante del modulo.L'oggetto corrispondente del tipo Eng è l'oggetto sottostante del modulo.

Il modello utilizza un motore di cui è stato eseguito il wrapping in base al tipo di valori prodotti dall'oggetto engine al tipo di valori richiesti dall'oggetto distribution.operator() di cui è stato eseguito il wrapping del motore restituisce valori di tipo Dist::input_type, generati come segue:

se Engine::result_type e Dist::input_type sono entrambi i tipi integrali che restituisce eng(), convertito nel tipo Dist::input_type.

se Engine::result_type e Dist::input_type sono entrambi i tipi a virgola mobile restituisce (eng() - eng.min()) / (eng.max() - eng.min()), convertito nel tipo Dist::input_type.

se Engine::result_type è un tipo integrale e Dist::input_type è un tipo che a virgola mobile restituisce (eng() - eng.min()) / (eng.max() - eng.min() + 1), convertito nel tipo Dist::input_type.

se Engine::result_type è un tipo a virgola mobile e Dist::input_type è un tipo integrale che restituisce ((eng() - eng.min()) / (eng.max() - eng.min()) * std::numeric_limits<Dist::input_type>::max(), convertito nel tipo Dist::input_type.

Requisiti

intestazione: <random>

Spazio dei nomi: deviazione standard

Vedere anche

Riferimenti

<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