subtract_with_carry_engine, classe
Génère une séquence aléatoire en utilisant l'algorithme Substract With Carry (Lagged Fibonacci).
template<class UIntType, size_t W, size_t S, size_t R> class subtract_with_carry_engine;
Paramètres
UIntType
Type des résultats entiers non signés. Pour plus d'informations sur les types possibles, voir <random>.W
Taille de mot. Taille de chaque mot, en bits, de la séquence d'état. Condition préalable : 0 < W ≤ numeric_limits<UIntType>::digitsS
Décalage court. Nombre de valeurs entières. Condition préalable : 0 < S < RR
Décalage long. Détermine la périodicité dans la série générée.
Membres
subtract_with_carry_engine::subtract_with_carry_engine |
subtract_with_carry_engine::min |
subtract_with_carry_engine::discard |
subtract_with_carry_engine::operator() |
subtract_with_carry_engine::max |
subtract_with_carry_engine::seed |
default_seed est une constante membre, définie comme 19780503u, utilisée comme valeur de paramètre par défaut pour subtract_with_carry_engine::seed et le constructeur de valeur unique. |
Pour plus d'informations sur les membres moteurs, voir <random>.
Notes
La classe de modèle substract_with_carry_engine est une version améliorée du linear_congruential_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) = (x(i - R) - x(i - S) - cy(i - 1)) mod M, où cy(i) a la valeur 1 si x(i - S) - x(i - R) - cy(i - 1) < 0, sinon 0, et M a la valeur 2W. L'état du moteur est un indicateur de Carry plus R valeurs. Ces valeurs sont constituées des R dernières valeurs retournées si operator() a été appelé au moins R fois, sinon les N valeurs qui ont été retournées et les R - N dernières valeurs de la valeur initiale.
L'argument de modèle UIntType doit être assez volumineux pour contenir des valeurs jusqu'à M - 1.
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 |
---|---|
ranlux24_base |
Utilisé comme base pour ranlux24.
|
ranlux48_base |
Utilisé comme base pour ranlux48.
|
Pour plus d'informations sur l'algorithme de moteur Substract With Carry, voir l'article de Wikipedia Lagged Fibonacci generator.
Configuration requise
En-tête : <random>
Espace de noms : std