Namespaces
Variants

std:: linear_congruential_engine

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

class UIntType,
UIntType a,
UIntType c,
UIntType m

> class linear_congruential_engine ;
(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 ,
48271 , 0 , 2147483647 >
Nouveau "Standard minimum", recommandé par Park, Miller et Stockmeyer en 1993

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)
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