Compartilhar via


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).

typedef linear_congruential_engine<unsigned int, 16807, 0, 2147483647> minstd_rand0;

minstd_rand

Mecanismo padrão mínimo atualizado minstd_rand0 (Park, Miller e Stockmeyer, 1993).

typedef linear_congruential_engine<unsigned int, 48271, 0, 2147483647> minstd_rand;

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

Consulte também

Referência

<random>