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