Freigeben über


linear_congruential_engine-Klasse

Generiert eine zufällige Sequenz mithilfe des linearen Kongruenzalgorithmus.

Syntax

class linear_congruential_engine{
   public:  // types
   typedef UIntType result_type;
   // engine characteristics
   static constexpr result_type multiplier = a;
   static constexpr result_type increment = c;
   static constexpr result_type modulus = m;
   static constexpr result_type min() { return c == 0u  1u: 0u; }
   static constexpr result_type max() { return m - 1u; }
   static constexpr result_type default_seed = 1u;
   // constructors and seeding functions
   explicit linear_congruential_engine(result_type s = default_seed);
   template <class Sseq>
   explicit linear_congruential_engine(Sseq& q);
   void seed(result_type s = default_seed);
   template <class Sseq>
   void seed(Sseq& q);
   // generating functions
   result_type operator()();
   void discard(unsigned long long z);
   };

Parameter

UIntType
Der unsigned integer-Ergebnistyp. Mögliche Typen finden Sie unter <"zufällig>".

A
Multiplikator. Vorbedingung: Siehe Abschnitt „Hinweise“.

C
Inkrement. Vorbedingung: Siehe Abschnitt „Hinweise“.

M
Modulo. Vorbedingung: Siehe Abschnitt „Hinweise“.

Member

linear_congruential_engine::linear_congruential_engine linear_congruential_engine::discard
linear_congruential_engine::max
linear_congruential_engine::min
linear_congruential_engine::operator()
linear_congruential_engine::seed

default_seed ist eine als 1u definierte Memberkonstante, die als Standardparameterwert für linear_congruential_engine::seed und den Einzelwertkonstruktor verwendet wird.

Weitere Informationen zu Modulmitgliedern finden Sie unter <"zufällig>".

Hinweise

Die linear_congruential_engine Klassenvorlage ist das einfachste Generatormodul, aber nicht die schnellste oder höchste Qualität. substract_with_carry_engine ist gegenüber diesem Modul eine Verbesserung. Keines dieser Module ist so schnell oder gibt so hochqualitative Ergebnisse zurück wie mersenne_twister_engine.

Diese Engine produziert Werte eines benutzerdefinierten Ganzzahltyps ohne Vorzeichen mithilfe der Wiederholungsrelation (period) x(i) = (A * x(i-1) + C) mod M.

Wenn M null ist, lautet numeric_limits<result_type>::max() + 1der für diesen Modulus-Vorgang verwendete Wert . Der Zustand der Engine ist der letzte zurückgegebene Wert oder der Startwert, wenn operator() nicht aufgerufen wurde.

Wenn M nicht null ist, müssen die Werte der Vorlagenargumente A und C kleiner als M sein.

Obwohl Sie direkt aus dieser Engine einen Generator konstruieren können, können Sie auch eine dieser voreingestellten Typdefinitionen verwenden.

minstd_rand0: 1988 minimal standard engine (Lewis, Goodman und Miller, 1969).

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

minstd_rand: Updated minimal standard engine minstd_rand0 (Park, Miller und Stockmeyer, 1993).

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

Ausführliche Informationen über den Algorithmus für die lineare Kongruenz-Engine, erhalten Sie im Wikipedia-Artikel Linearer Kongruenzgenerator.

Anforderungen

Header:<random>

Namespace: std

Siehe auch

<random>