Partager via


linear_congruential_engine Class

Génère une séquence aléatoire par l'algorithme congruential linéaire.

template<class UIntType,
    UIntType A, UIntType C, UIntType M>
    class linear_congruential_engine {
public:
    typedef UIntType result_type;
    static const UIntType multiplier = A;
    static const UIntType increment = C;
    static const UIntType modulus = M;
    static const UIntType default_seed = 1U;
    explicit linear_congruential_engine(result_type x0 = default_seed);
    explicit linear_congruential_engine(seed_seq& seq);
    void seed(result_type x0 = default_seed);
    void seed(seed_seq& seq);
    static const result_type min();
    static const result_type max();
    result_type operator()();
    void discard(unsigned long long count)();
private:
    result_type stored_value;
    };

Paramètres

  • UIntType
    Le type de résultat d'entier non signé.

  • A
    Le paramètre du moteur d'Un.

  • C
    Le paramètre du moteur C.

  • M
    Le paramètre du moteur de M.

Notes

La classe de modèle décrit <random> qui produit des valeurs d'un type entier non signé spécifié par l'utilisateur à l'aide de la relation x(i) = (A * x(i-1) + C) mod Mde relationrecurrence de périodicité.L'état du moteur est la dernière valeur retournée, ou la valeur de départ si aucun appel a été passé à operator().

L'argument template UIntType doit être suffisamment grande pour contenir des valeurs jusqu'à M - 1.Les valeurs des arguments template A et C doivent être moins qu' M.

Configuration requise

en-tête : <random>

l'espace de noms : DST

Voir aussi

Référence

<random>

linear_congruential_engine::discard

linear_congruential_engine::linear_congruential_engine

linear_congruential_engine::operator()

linear_congruential_engine::seed