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) (desde C++11)
explicit linear_congruential_engine ( result_type value ) ;
(2) (desde C++11)
template < class SeedSeq >
explicit linear_congruential_engine ( SeedSeq & seq ) ;
(3) (desde C++11)
linear_congruential_engine ( const linear_congruential_engine & other ) ;
(4) (desde C++11)
(declarado implícitamente)

Construye el motor de números pseudoaleatorios.

1) El constructor por defecto.
  • Si el motor construido por defecto es de tipo std::minstd_rand0 , la 10000ª invocación consecutiva del mismo produce el valor 1043618065 .
  • Si el motor construido por defecto es de tipo std::minstd_rand , la 10000ª invocación consecutiva del mismo produce el valor 399268537 .
2) Construye el motor con un valor de semilla value . El estado inicial del motor se determina de la siguiente manera:
  • Si c % m == 0 y value % m == 0 son ambos true , el estado es 1 .
  • De lo contrario, el estado es value % m .
3) Construye el motor con una secuencia de semilla seq . Dado std:: size_t ( std:: log2 ( m ) / 32 ) + 1 como k , el estado inicial del motor se determina de la siguiente manera:
  1. Crea un objeto de arreglo inventado a de longitud k + 3 .
  2. Llama seq. generate ( a + 0 , a + k + 3 ) .
  3. Sea S igual a (∑ k-1
    j=0
    a j+3 ·2 32j
    ) mod m
    .
  4. Si tanto c % m == 0 como S == 0 son true , establece el estado del motor a 1 . De lo contrario, establece el estado del motor a S .
Esta sobrecarga participa en la resolución de sobrecarga solo si SeedSeq cumple con los requisitos de SeedSequence .
4) El constructor de copia. Al construir, * this == other es true .

Contenidos

Parámetros

value - valor de semilla a utilizar en la inicialización del estado interno
seq - secuencia de semilla a utilizar en la inicialización del estado interno

Complejidad

1,2) Constante.
3) Igual que la complejidad de la llamada a seq.generate .
4) Constante.

Excepciones

3) Si SeedSeq no es std::seed_seq , lanza las excepciones generadas por la llamada seq.generate .

Informes de defectos

Los siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares de C++ publicados anteriormente.

DR Aplicado a Comportamiento publicado Comportamiento correcto
LWG 2181 C++11 la sobrecarga ( 3 ) no lanzaría excepción incluso si la llamada seq.generate lanza propaga la excepción
P0935R0 C++11 el constructor por defecto era explícito hecho implícito

Véase también

establece el estado actual del motor
(función miembro pública)