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
variate_generator::distribution
variate_generator::distribution_type
variate_generator::engine_type