subtract_with_carry_engine Class
Génère une séquence aléatoire par le soustraire avec présentent des l'algorithme.
template<class UIntType,
int W, int S, int R>
class subtract_with_carry_engine {
public:
typedef UIntType result_type;
static const int word_size = W;
static const int short_lag = S;
static const int long_lag = R;
static const UIntType default_seed = 19780503U;
explicit subtract_with_carry_engine(UIntType x0 = default_seed);
explicit subtract_with_carry_engine(seed_seq& seq);
void seed(UIntType 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)();
};
Paramètres
UIntType
Le type de résultat entier.W
Le paramètre du moteur de M.S
Le paramètre du moteur de.R
Le paramètre du moteur de R.
Notes
La classe de modèle décrit 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) = (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.(Notez que le paramètre W de modèle ici remplace le paramètre M de modèle pour subtract_with_carry.) L'état du moteur est un indicateur de surcharge plus les valeurs d' R .Ces valeurs sont les valeurs d' R de bout retournées si operator() a été appelé au moins les temps d' R , sinon les valeurs d' N qui retournées et les dernières valeurs d' R - N de la valeur de départ.
L'argument template UIntType doit être suffisamment grande pour contenir des valeurs jusqu'à M - 1.Les valeurs des arguments template S et R doivent être supérieures à 0 et S doivent être moins qu' R.
Configuration requise
en-tête : <random>
l'espace de noms : DST
Voir aussi
Référence
subtract_with_carry_engine::discard
subtract_with_carry_engine::operator()