std:: subtract_with_carry_engine
|
Défini dans l'en-tête
<random>
|
||
|
template
<
class
UIntType,
|
(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 ,2w
). - 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 :
- Soit Y égal à X i-s -X i-r -c .
-
Soit
y
égal à
Y mod 2
w
, et définir X i à y . - 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) |
|
(C++11)
|
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
|
Cette section est incomplète
Raison : aucun 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 |