Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Generiert eine zufällige Sequenz mithilfe des (verzögerten Fibonacci-)Algorithmus "subtract with carry".
Syntax
template <class UIntType, size_t W, size_t S, size_t R>
class subtract_with_carry_engine;
Parameter
UIntType
Der unsigned integer-Ergebnistyp. Mögliche Typen finden Sie unter <"zufällig>".
W
Wortgröße. Größe jedes einzelnen Wortes der Zustandssequenz in Bits. Vorbedingung:0 < W ≤ numeric_limits<UIntType>::digits
S
Kurze Verzögerung. Anzahl der Ganzzahlwerte. Vorbedingung:0 < S < R
R
Lange Verzögerung. Bestimmt die Wiederholungsrate in der generierten Serie.
Member
subtract_with_carry_engine::subtract_with_carry_engine
subtract_with_carry_engine::max
subtract_with_carry_engine::min
subtract_with_carry_engine::discard
subtract_with_carry_engine::operator()
subtract_with_carry_engine::seed
default_seed ist eine als 19780503u definierte Memberkonstante, die als Standardparameterwert für subtract_with_carry_engine::seed und den Einzelwertkonstruktor verwendet wird.
Weitere Informationen zu Modulmitgliedern finden Sie unter <"zufällig>".
Hinweise
Die substract_with_carry_engine Klassenvorlage ist eine Verbesserung gegenüber dem linear_congruential_engine. Keines dieser Module ist so schnell oder gibt so hochqualitative Ergebnisse zurück wie das mersenne_twister_engine.
Dieses Modul erzeugt Werte eines vom Benutzer angegebenen nicht signierten integralen Typs mithilfe der Serienbeziehung ( Punkt), x(i) = (x(i - R) - x(i - S) - cy(i - 1)) mod Mwobei cy(i) der Wert 1 ", wenn x(i - S) - x(i - R) - cy(i - 1) < 0, andernfalls 0, und M der Wert 2W hat. Der Zustand des Motors ist ein Tragenindikator plus R-Werte . Diese Werte bestehen aus den letzten R-Werten , die zurückgegeben werden, wenn operator() sie mindestens R-Mal aufgerufen wurden, andernfalls die N zurückgegebenen Werte und die letzten R - N Werte des Ausgangswerts.
Das Vorlagenargument UIntType muss groß genug sein, um Werte bis zu M - 1 zu enthalten.
Obwohl Sie direkt aus dieser Engine einen Generator konstruieren können, können Sie auch eine der voreingestellten Typdefinitionen verwenden:
ranlux24_base: Wird als Grundlage für ranlux24 verwendet.
typedef subtract_with_carry_engine<unsigned int, 24, 10, 24> ranlux24_base;
ranlux48_base: Wird als Grundlage für ranlux48 verwendet.
typedef subtract_with_carry_engine<unsigned long long, 48, 5, 12> ranlux48_base;
Ausführliche Informationen zum Subtrahieren mit dem Tragen-Motoralgorithmus finden Sie im Wikipedia-Artikel Lagged Fibonacci Generator.
Anforderungen
Header:<random>
Namespace: std