Namespaces
Variants

std::linear_congruential_engine<UIntType,a,c,m>:: linear_congruential_engine

From cppreference.net
linear_congruential_engine ( ) : linear_congruential_engine ( default_seed ) { }
(1) (depuis C++11)
explicit linear_congruential_engine ( result_type value ) ;
(2) (depuis C++11)
template < class SeedSeq >
explicit linear_congruential_engine ( SeedSeq & seq ) ;
(3) (depuis C++11)
linear_congruential_engine ( const linear_congruential_engine & other ) ;
(4) (depuis C++11)
(déclaré implicitement)

Construit le moteur de nombres pseudo-aléatoires.

1) Le constructeur par défaut.
  • Si le moteur construit par défaut est de type std::minstd_rand0 , la 10000ème invocation consécutive de celui-ci produit la valeur 1043618065 .
  • Si le moteur construit par défaut est de type std::minstd_rand , la 10000ème invocation consécutive de celui-ci produit la valeur 399268537 .
2) Construit le moteur avec une valeur de graine value . L'état initial du moteur est déterminé comme suit :
  • Si c % m == 0 et value % m == 0 sont tous deux true , l'état est 1 .
  • Sinon, l'état est value % m .
3) Construit le moteur avec une séquence de graines seq . Étant donné std:: size_t ( std:: log2 ( m ) / 32 ) + 1 comme k , l'état initial du moteur est déterminé comme suit :
  1. Crée un objet tableau inventé a de longueur k + 3 .
  2. Appelle seq. generate ( a + 0 , a + k + 3 ) .
  3. Soit S égal à (∑ k-1
    j=0
    a j+3 ·2 32j
    ) mod m
    .
  4. Si à la fois c % m == 0 et S == 0 sont true , définit l'état du moteur à 1 . Sinon, définit l'état du moteur à S .
Cette surcharge participe à la résolution de surcharge uniquement si SeedSeq satisfait aux exigences de SeedSequence .
4) Le constructeur de copie. Lors de la construction, * this == other est true .

Table des matières

Paramètres

value - valeur de départ à utiliser dans l'initialisation de l'état interne
seq - séquence de départ à utiliser dans l'initialisation de l'état interne

Complexité

1,2) Constant.
3) Identique à la complexité de l'appel seq.generate .
4) Constante.

Exceptions

3) Si SeedSeq n'est pas std::seed_seq , lance les exceptions levées par l'appel seq.generate .

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 Applicable à Comportement publié Comportement corrigé
LWG 2181 C++11 la surcharge ( 3 ) ne levait pas d'exception même si l'appel à seq.generate levait une exception propage l'exception
P0935R0 C++11 le constructeur par défaut était explicite rendu implicite

Voir aussi

définit l'état actuel du moteur
(fonction membre publique)