Namespaces
Variants

std:: subtract_with_carry_engine

From cppreference.net
Défini dans l'en-tête <random>
template <

class UIntType,
std:: size_t w, std:: size_t s, std:: size_t r

> class subtract_with_carry_engine ;
(depuis C++11)

Est un moteur de nombres aléatoires qui utilise l'algorithme de soustraction avec retenue .

Table des matières

Paramètres du modèle

UIntType - Le type de résultat généré par le générateur. L'effet est indéfini si ce n'est pas l'un des unsigned short , unsigned int , unsigned long , ou unsigned long long .
w - la taille du mot, en bits, de la séquence d'état
s - le décalage court
r - le décalage long

Si w n'est pas dans [ 1 , std:: numeric_limits < UIntType > :: digits ] , ou si s n'est pas dans [ 1 , r ) , le programme est mal formé.

Propriétés du générateur

La taille des états du subtract_with_carry_engine est O(r) , chacun d'eux se compose de deux parties :

  • Une séquence X de r valeurs entières, où chaque valeur est dans [ 0 , 2 w
    )
    .
  • Un entier c (appelé carry ), dont la valeur est soit 0 soit 1 .

Étant donné que X j représente la j mod r -ième valeur (en commençant à 0) de X , l' algorithme de transition de subtract_with_carry_engine ( TA(x i ) ) est défini comme suit :

  1. Soit Y égal à X i-s -X i-r -c .
  2. Soit y égal à Y mod 2 w
    , et définir X i à y .
  3. Si Y est négatif, définir c à 1 , sinon définir c à 0 .

L' algorithme de génération du subtract_with_carry_engine est GA(x i ) = y , où y est la valeur produite à l'étape 2 de l'algorithme de transition.

Spécialisations prédéfinies

Les spécialisations suivantes définissent le générateur de nombres aléatoires avec deux ensembles de paramètres couramment utilisés :

Défini dans l'en-tête <random>
Type Définition
ranlux24_base (C++11) std :: subtract_with_carry_engine < std:: uint_fast32_t , 24 , 10 , 24 >
ranlux48_base (C++11) std :: subtract_with_carry_engine < std:: uint_fast64_t , 48 , 5 , 12 >

Types imbriqués

Type Définition
result_type UIntType

Membres de données

constexpr std::size_t word_size
[static]
w
(constante de membre public static)
constexpr std::size_t short_lag
[static]
s
(constante de membre public static)
constexpr std::size_t long_lag
[static]
r
(constante de membre public static)
constexpr std::uint_least32_t default_seed
[static]
19780503u
(constante de membre public static)

Fonctions membres

Construction et Initialisation
construit le moteur
(fonction membre publique)
définit l'état courant du moteur
(fonction membre publique)
Génération
avance l'état du moteur et retourne la valeur générée
(fonction membre publique)
avance l'état du moteur d'une quantité spécifiée
(fonction membre publique)
Caractéristiques
[static]
obtient la plus petite valeur possible dans la plage de sortie
(fonction membre publique statique)
[static]
obtient la plus grande valeur possible dans la plage de sortie
(fonction membre publique statique)

Fonctions non membres

(C++11) (C++11) (supprimé en C++20)
compare les états internes de deux moteurs de nombres pseudo-aléatoires
(fonction)
effectue des opérations d'entrée et de sortie en flux sur un moteur de nombres pseudo-aléatoires
(modèle de fonction)

Exemple

Rapports de défauts

Les rapports de défauts modifiant le comportement suivants ont été appliqués rétroactivement aux normes C++ précédemment publiées.

DR Appliqué à Comportement publié Comportement corrigé
LWG 3809 C++11 default_seed pourrait ne pas être
représentable avec result_type
a modifié son type en
std::uint_least32_t