Condividi tramite


Classe linear_congruential_engine

Genera una sequenza casuale mediante l'algoritmo congruenziale lineare.

template<class UIntType, UIntType A, UIntType C, UIntType M> class linear_congruential_engine;

Parametri

  • UIntType
    Tipo di risultato Unsigned Integer. Per informazioni sui tipi possibili, vedere <random>.

  • A
    Moltiplicatore. Precondizione: vedere la sezione Osservazioni.

  • C
    Incremento. Precondizione: vedere la sezione Osservazioni.

  • M
    Modulo. Precondizione: Vedere Osservazioni.

Membri

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 è una costante membro definita come 1u, usata come valore di parametro predefinito per linear_congruential_engine::seed e per il costruttore a valore singolo.

Per altre informazioni sui membri del motore, vedere <random>.

Note

La classe modello linear_congruential_engine è il motore di generazione più semplice, ma non il più rapido o quello che offre la migliore qualità. Un miglioramento rispetto a questo motore è rappresentato da substract_with_carry_engine. Nessuno di questi motori può tuttavia eguagliare la rapidità e la qualità dei risultati offerte da mersenne_twister_engine.

Il motore produce valori di un tipo Unsigned Integral specificato dall'utente usando la relazione di ricorrenza (periodo) x(i) = (A * x(i-1) + C) mod M.

If M è zero, il valore usato per questa operazione di modulo è numeric_limits<result_type>::max() + 1. L'ultimo valore restituito è lo stato del motore oppure il valore di seeding se non sono state effettuate chiamate a operator().

Se M è diverso da zero, i valori degli argomenti di modello A e C devono essere minori di M.

Sebbene sia possibile costruire un generatore direttamente da questo motore, è anche possibile usare uno dei typedef predefiniti indicati nella tabella seguente.

Nome

Descrizione

minstd_rand0

Motore del 1988 a standard minimo (Lewis, Goodman e Miller, 1969).

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

minstd_rand

Motore standard minimo minstd_rand0 aggiornato (Park, Miller e Stockmeyer, 1993).

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

Per altre informazioni sull'algoritmo del motore congruenziale lineare, vedere l'articolo di Wikipedia Generatore lineare congruenziale.

Requisiti

Intestazione: <random>

Spazio dei nomi: std

Vedere anche

Riferimenti

<random>