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).
|
minstd_rand |
Motore standard minimo minstd_rand0 aggiornato (Park, Miller e Stockmeyer, 1993).
|
Per altre informazioni sull'algoritmo del motore congruenziale lineare, vedere l'articolo di Wikipedia Generatore lineare congruenziale.
Requisiti
Intestazione: <random>
Spazio dei nomi: std