Classe linear_congruential_engine
Gera uma sequência aleatória pelo algoritmo congruente linear.
template<class UIntType, UIntType A, UIntType C, UIntType M> class linear_congruential_engine;
Parâmetros
UIntType
O tipo de resultado inteiro sem sinal. Para obter os tipos possíveis, consulte <random>.A
Multiplicador. Pré-condição: Consulte a seção Observações.C
Incremento. Pré-condição: Consulte a seção Observações.M
Módulo. Pré-condição: Consulte Observações.
Membros
linear_congruential_engine::linear_congruential_engine |
linear_congruential_engine::min |
linear_congruential_engine::discard |
linear_congruential_engine::operator() |
linear_congruential_engine::max |
linear_congruential_engine::seed |
default_seed é uma constante de membro, definida como 1u, usada como valor de parâmetro padrão para linear_congruential_engine::seed e construtor de valor único. |
Para obter mais informações sobre membros do mecanismo, consulte <random>.
Comentários
A classe de modelo linear_congruential_engine é o mecanismo gerador mais simples, mas não o mais rápido nem de maior qualidade. Uma melhoria em relação a esse mecanismo é o substract_with_carry_engine. Nenhum desses mecanismos é tão rápido nem tem resultados de qualidade tão altos quanto o mersenne_twister_engine.
Esse mecanismo produz valores de um tipo de integral não assinado especificado pelo usuário usando a relação de recorrência (ponto final) x(i) = (A * x(i-1) + C) mod M.
Se M for igual a zero, o valor usado para essa operação de módulo é numeric_limits<result_type>::max() + 1. O estado do mecanismo é o último valor retornado ou o valor semente, se nenhuma chamada tiver sido feita a operator().
Se M for diferente de zero, os valores dos argumentos de modelo A e C devem ser inferiores a M.
Embora seja possível construir um gerador diretamente desses mecanismos, também é possível usar um dos typedefs predefinidos na tabela a seguir.
Nome |
Descrição |
---|---|
minstd_rand0 |
Mecanismo padrão mínimo de 1988 (Lewis, Goodman e Miller, 1969).
|
minstd_rand |
Mecanismo padrão mínimo atualizado minstd_rand0 (Park, Miller e Stockmeyer, 1993).
|
Para obter informações detalhadas sobre o algoritmos de mecanismo congruente linear, consulte o artigo da Wikipedia Linear congruential generator (em inglês).
Requisitos
Cabeçalho: <random>
Namespace: std