Partager via


linear_congruential_engine, classe

Génère une séquence aléatoire en utilisant l'algorithme congruentiel linéaire.

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

Paramètres

  • UIntType
    Type des résultats entiers non signés. Pour plus d'informations sur les types possibles, voir <random>.

  • A
    Multiplicateur. Condition préalable : consultez la section Notes.

  • C
    Incrémentation. Condition préalable : consultez la section Notes.

  • M
    Module. Condition préalable : consultez la section Notes.

Membres

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 est une constante membre, définie comme 1u, utilisée comme valeur de paramètre par défaut pour linear_congruential_engine::seed et le constructeur de valeur unique.

Pour plus d'informations sur les membres moteurs, voir <random>.

Notes

La classe de modèle linear_congruential_engine est le moteur de générateur le plus simple, mais pas le plus rapide ni avec la qualité la plus élevée. Une version améliorée de ce moteur est substract_with_carry_engine. Aucun de ces moteurs n'est aussi rapide ni ne produit des résultats d'aussi bonne qualité que mersenne_twister_engine.

Ce moteur produit des valeurs d'un type intégral non signé spécifié par l'utilisateur à l'aide de la relation de périodicité (période) x(i) = (A * x(i-1) + C) mod M.

Si M est égal à zéro, la valeur utilisée pour cette opération de module est numeric_limits<result_type>::max() + 1. L'état du moteur est représenté par la dernière valeur retournée ou la valeur initiale si aucun appel n'a été passé à operator().

Si M n'est pas égal à zéro, les valeurs des arguments de modèle A et C doivent être inférieures à M.

Bien que vous puissiez construire un générateur directement à partir de ce moteur, vous pouvez également utiliser l'un des typedefs prédéfinis répertoriés dans le tableau suivant.

Nom

Description

minstd_rand0

Moteur standard minimal 1988 (Lewis, Goodman et Miller, 1969).

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

minstd_rand

Moteur standard minimal mis à jour minstd_rand0 (Park, Miller et Stockmeyer, 1993).

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

Pour plus d'informations sur l'algorithme du moteur congruentiel linéaire, voir l'article de Wikipedia Linear congruential generator.

Configuration requise

En-tête : <random>

Espace de noms : std

Voir aussi

Référence

<random>