std:: linear_congruential_engine
|
Défini dans l'en-tête
<random>
|
||
|
template
<
class
UIntType,
|
(depuis C++11) | |
linear_congruential_engine
est un moteur de génération de nombres aléatoires basé sur le
générateur congruentiel linéaire
(LCG).
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 . |
| a | - | le terme multiplicateur |
| c | - | le terme d'incrément |
| m | - | le terme de module |
Lorsque m n'est pas nul, si a >= m ou c >= m est true , le programme est mal formé.
Propriétés du générateur
La
taille
des états du
linear_congruential_engine
est de
1
, chacun d'eux consiste en un seul entier.
Le module réel m 0 est défini comme suit :
- Si m n'est pas zéro, m 0 est m .
-
Si
m
est zéro,
m
0
est la valeur de
std::
numeric_limits
<
result_type
>
::
max
(
)
plus
1
(ce qui signifie que
m
0
n'a pas besoin d'être représentable en tant que
result_type).
L'
algorithme de transition
du
linear_congruential_engine
est
TA(x
i
) = (a·x
i
+c) mod m
0
.
L'
algorithme de génération
du
linear_congruential_engine
est
GA(x
i
) = (a·x
i
+c) mod m
0
.
Le nombre pseudo-aléatoire généré avec l'état actuel est également l'état successeur.
Spécialisations prédéfinies
Les spécialisations suivantes définissent le moteur de nombres aléatoires avec deux ensembles de paramètres couramment utilisés :
|
Défini dans l'en-tête
<random>
|
|
| Type | Définition |
minstd_rand0
(C++11)
|
std
::
linear_congruential_engine
<
std::
uint_fast32_t
,
16807
,
0
,
2147483647
>
Découvert en 1969 par Lewis, Goodman et Miller, adopté comme "Standard minimal" en 1988 par Park et Miller |
minstd_rand
(C++11)
|
std
::
linear_congruential_engine
<
std::
uint_fast32_t
,
|
Types imbriqués
| Type | Définition |
result_type
|
UIntType
|
Membres de données
|
constexpr UIntType
multiplicateur
[static]
|
a
(constante de membre public static) |
|
constexpr UIntType
incrément
[static]
|
c
(constante de membre public static) |
|
constexpr UIntType
module
[static]
|
m
(constante de membre public static) |
|
constexpr UIntType
graine_par_défaut
[static]
|
1u
(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 génération de nombres pseudo-aléatoires
(fonction) |
|
(C++11)
|
effectue des opérations d'entrée/sortie sur flux pour un moteur de génération de nombres pseudo-aléatoires
(modèle de fonction) |
Exemple
|
Cette section est incomplète
Raison : aucun exemple |