Partilhar via


Classe variate_generator

Quebra um mecanismo e uma distribuição.

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

Parâmetros

  • Engine
    O tipo de mecanismo aleatório.

  • Dist
    O tipo da distribuição.

Comentários

A classe de modelo descreve um objeto que contém um mecanismo e uma distribuição e produz valores passando o objeto empacotado mecanismo para o distribution objeto operator().

O argumento de modelo Engine pode ser um tipo Eng, Eng*, ou Eng&, onde Eng é um mecanismo. O tipo de Eng é o tipo de mecanismo subjacente. O objeto correspondente do tipo Eng é o objeto mecanismo subjacente.

O modelo usa um mecanismo empacotado para corresponder ao tipo de valores produzidos pelo engine objeto do tipo de valores exigidos pela distribution objeto. operator() Retorna valores do tipo Dist::input_type, gerado da seguinte maneira:

if Engine::result_type e Dist::input_type são os dois tipos integrais retornará eng(), convertido no tipo Dist::input_type.

if Engine::result_type e Dist::input_type são os dois tipos de ponto flutuante retornará (eng() - eng.min()) / (eng.max() - eng.min()), convertido no tipo Dist::input_type.

if Engine::result_type é um tipo integral e Dist::input_type é um tipo de ponto flutuante retornará (eng() - eng.min()) / (eng.max() - eng.min() + 1), convertido no tipo Dist::input_type.

if Engine::result_type é um tipo de ponto flutuante e Dist::input_type é um tipo integral retornará ((eng() - eng.min()) / (eng.max() - eng.min()) * std::numeric_limits<Dist::input_type>::max(), convertido no tipo Dist::input_type.

Requisitos

Cabeçalho:<random>

Namespace: std::tr1

Consulte também

Referência

<random>

Classe variate_generator