Espacios de nombres
Variantes
Acciones

Requisitos denominados de C++:RandomNumberEngine(desde C++11)

De cppreference.com
< cpp‎ | named req
 
 
Requisitos denominados de C++
Números aleatorios
Concurrencia
(C++11)
(C++11)
Rangos
Vista multidimensional
Otros

 

Un motor de números aleatorios es un objeto función que devuelve valores enteros sin signo de modo que cada valor del rango de posibles resultados tiene la misma probabilidad (idealmente).

Cualquier motor de números aleatorios es un GeneradorDeBitsAleatorioUniforme, y, por lo tanto, puede conectarse a cualquier distribución de números aleatorios para obtener un número aleatorio (formalmente, una variable aleatoria).

[editar]Requisitos

Un tipo satisface MotorDeNúmerosAleatorios si satisface GeneradorDeBitsAleatorioUniforme, y, dados los siguientes tipos y valores, se satisfacen los requisitos de semántica y complejidad es la siguiente tabla:

Tipo Definición
E Un tipo MotorDeNúmerosAleatorios.
TE::result_type.
Valor Definición
e Un valor de tipo E.
v Un l-valor de tipo E.
x, y Valores de tipo (que pueden estar calificados const) E.
s Un valor de tipo T.
q Un l-valor SeedSequence.
z Un valor de tipo unsignedlonglong.
os Un l-valor cuyo tipo es una especialización de std::basic_ostream.
is Un l-valor cuyo tipo es una especialización de std::basic_istream.
n El tamaño del estado de E.
TA El algoritmo de transición de E.
GA El algoritmo de generación de E.
Expresión Tipo devuelto Semántica Complejidad
E()N/ACrea un motor con el mismo estado inicial que todos los demás motores construidos por defecto del tipo E. O(n)
E(x)Crea un motor que se compara igual a x. O(n)
E(s)Crea un motor cuyo estado inicial se determina por s. O(n)
E(q)Crea un motor cuyo estado inicial está determinado por una única llamada a q.generate. La misma que la complejidad de q.generate llamada en una secuencia cuya longitud es n.
e.seed()voidPoscondición: e == E(). Igual que E().
e.seed(s)voidPoscondición: e == E(s). Igual que E(s).
e.seed(q)voidPoscondición: e == E(q). Igual que E(q).
e()TAvanza el estado de e desde e
i
a e
i+1
(por ejemplo TA(e
i
)
) y devuelve GA(e
i
)
.
Amortizado constante.
e.discard(z)voidAvanza el estado de e desde e
i
a e
i+z
por cualquier medio equivalente a z llamadas consecutivas a e().
No es peor que la complejidad de z llamadas consecutivas a e().
x == yboolPara todos lo enteros positivos i, si las i-ésimas llamadas consecutivas a x() e y() devuelven el mismo valor, devuelve true. De lo contrario, devuelve false. O(n)
x != ybool!(x == y)O(n)
os << xdecltype(os)&  Con los indicadores de formato establecidos en std::ios_base::dec|std::ios_base::left y el carácter de relleno establecido en el carácter espacio, escribe en os la representación textual del estado actual de x.

Poscondición: los indicadores de formato de os y el carácter de relleno son los mismos de antes.

O(n)
is >> vdecltype(is)&Con los indicadores de formato establecidos en std::ios_base::dec, lee de is la representación textual del estado actual de v. Si se encuentra una entrada errónea, asegura que el estado de v no cambia por la operación y llama a is.setstate(std::ios_base::failbit) (que puede lanzar la excepción std::ios_base::failure).

Precondición: is proporciona una representación textual que se escribió previamente usando un flujo de salida pr que satisface todas las condiciones siguientes:

  • is.getloc()== pr.getloc() es true.
  • std::is_same<decltype(is)::char_type,
                 decltype(pr)::char_type>::value
    es true.
  • std::is_same<decltype(is)::traits_type,
                 decltype(pr)::traits_type>::value
    es true.

Poscondición: los indicadores de formato de is son los mismos que antes.

O(n)

[editar]Biblioteca estándar

Las siguientes funciones de la biblioteca estándar satifacen MotorDeNúmerosAleatorios:

Implementa un algoritmo generador lineal congruencial.
(plantilla de clase)[editar]
Implementa el algoritmo Mersenne twister
(plantilla de clase)[editar]
Implementa un algoritmo de resta con acarreo (Fibonacci con retraso).
(plantilla de clase)[editar]
Un generador paralelizable basado en recuentos.
(plantilla de clase)[editar]
Descarta alguna salida de un motor de números aleatorios.
(plantilla de clase)[editar]
Empaqueta la salida de un motor de números aleatorios en bloques de un número específico de bits.
(plantilla de clase)[editar]
Entrega la salida de un motor de número aleatorios en un orden diferente.
(plantilla de clase)[editar]

Las siguientes funciones de la biblioteca estándar satisfacen GeneradorDeBitsAleatorioUniforme pero no MotorDeNúmerosAleatorios:

Generador de números aleatorios no determinista usando como fuente entropía hardware.
(clase)[editar]
close