std:: linear_congruential_engine
|
Definido en el encabezado
<random>
|
||
|
template
<
class
UIntType,
|
(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
,
|
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) |
|
(C++11)
|
realiza entrada y salida por flujo en el motor de números pseudoaleatorios
(plantilla de función) |
Ejemplo
|
Esta sección está incompleta
Motivo: sin ejemplo |