Namespaces
Variants

std:: linear_congruential_engine

From cppreference.net
Definido en el encabezado <random>
template <

class UIntType,
UIntType a,
UIntType c,
UIntType m

> class linear_congruential_engine ;
(desde C++11)

linear_congruential_engine es un motor de números aleatorios basado en el generador lineal congruencial (LCG).

Contenidos

Parámetros de plantilla

UIntType - El tipo de resultado generado por el generador. El efecto es indefinido si este no es uno de unsigned short , unsigned int , unsigned long , o unsigned long long .
a - el término multiplicador
c - el término incremento
m - el término módulo

Cuando m no es cero, si a >= m o c >= m es true , el programa está mal formado.

Propiedades del generador

El tamaño de los estados de linear_congruential_engine es 1 , cada uno de ellos consiste en un único entero.

El módulo real m 0 se define de la siguiente manera:

  • Si m no es cero, m 0 es m .
  • Si m es cero, m 0 es el valor de std:: numeric_limits < result_type > :: max ( ) más 1 (lo que significa que m 0 no necesita ser representable como result_type ).

El algoritmo de transición de linear_congruential_engine es TA(x i ) = (a·x i +c) mod m 0 .

El algoritmo de generación de linear_congruential_engine es GA(x i ) = (a·x i +c) mod m 0 .

El número pseudoaleatorio generado con el estado actual también es el estado sucesor.

Especializaciones predefinidas

Las siguientes especializaciones definen el motor de números aleatorios con dos conjuntos de parámetros de uso común:

Definido en el encabezado <random>
Tipo Definición
minstd_rand0 (C++11) std :: linear_congruential_engine < std:: uint_fast32_t ,
16807 , 0 , 2147483647 >

Descubierto en 1969 por Lewis, Goodman y Miller, adoptado como "Estándar mínimo" en 1988 por Park y Miller

minstd_rand (C++11)

std :: linear_congruential_engine < std:: uint_fast32_t ,
48271 , 0 , 2147483647 >
Nuevo "Estándar mínimo", recomendado por Park, Miller y Stockmeyer en 1993

Tipos anidados

Tipo Definición
result_type UIntType

Miembros de datos

constexpr UIntType multiplicador
[static]
a
(constante de miembro público estático)
constexpr UIntType incremento
[static]
c
(constante de miembro público estático)
constexpr UIntType módulo
[static]
m
(constante de miembro público estático)
constexpr UIntType semilla_por_defecto
[static]
1u
(constante de miembro público estático)

Funciones miembro

Construcción y Semilla
construye el motor
(función miembro pública)
establece el estado actual del motor
(función miembro pública)
Generación
avanza el estado del motor y devuelve el valor generado
(función miembro pública)
avanza el estado del motor en una cantidad especificada
(función miembro pública)
Características
[static]
obtiene el valor más pequeño posible en el rango de salida
(función miembro estática pública)
[static]
obtiene el valor más grande posible en el rango de salida
(función miembro estática pública)

Funciones no miembro

(C++11) (C++11) (eliminado en C++20)
compara los estados internos de dos motores de números pseudoaleatorios
(función)
realiza entrada y salida por flujo en el motor de números pseudoaleatorios
(plantilla de función)

Ejemplo