Partager via


linear_congruential Class

Génère une séquence aléatoire par l'algorithme congruential linéaire.Conservé pour la compatibilité TR1.Utilisez plutôt linear_congruential_engine Class.

template<class UIntType,
   UIntType A, UIntType C, UIntType M>
   class linear_congruential {
public:
   typedef linear_congruential<UIntType, A, C, M> _MyT;
   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(UIntType x0 = default_seed)
   linear_congruential(const linear_congruential& right);
   linear_congruential(linear_congruential& right);
   template<class Gen>
      linear_congruential(Gen& gen);
   void seed(UIntType x0 = default_seed);
   template<class Gen>
      void seed(Gen& gen);
   result_type min() const;
   result_type max() const;
   result_type operator()();
private:
   result_type stored_value;    // exposition only
   };

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

Cette classe de modèle décrit un moteur simple qui produit des valeurs d'un type entier non signé spécifié par l'utilisateur à l'aide de la relation de récurrence x(i) = (A * x(i-1) + C) mod M.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::linear_congruential

linear_congruential::operator()

linear_congruential::seed