Requisitos denominados de C++:UniformRandomBitGenerator(desde C++11)
Un generador de bits aleatorio uniforme es un objeto función que devuelve valores enteros sin signo donde cada valor en el rango de posibles resultados tiene la misma probabilidad (idealmente).
Los generadores de bits aleatorios uniformes no están pensados para usarse como generadores de números aleatorios: se usan como fuente de bits aleatorios (generados en masa, por eficiencia). Cualquier generador de bits aleatorios uniformes se puede conectar a cualquier distribución de números aleatorios para obtener un número aleatorio (formalmente, una variable aleatoria).
Contenido |
[editar]Requisitos
El tipo G
satisface GeneradorDeBitsAleatorioUniforme si
Dado g, un valor de tipo
| (hasta C++20) |
Expresión | Tipo | Requisitos |
---|---|---|
G::min() | G::result_type |
|
G::max() | G::result_type |
|
g() | G::result_type |
|
Se satisfacen todas las condiciones siguientes:
| (desde C++20) |
[editar]Notas
Todos los MotorDeNúmerosAleatorios satisfacen este requisito.
[editar]Biblioteca estándar
Las siguientes funciones de la biblioteca estándar esperan un tipo GeneradorDeBitsAleatorioUniforme.
(hasta C++17)(C++11) | Reordena aleatoriamente elementos en un rango. (plantilla de función) |
(C++17) | Selecciona N elementos aleatorios de una secuencia. (plantilla de función) |
(C++11) | Distribuye uniformemente los valores reales de precisión dada en el rango [ 0, 1) . (plantilla de función) |
(C++11) | Produce valores enteros distribuidos uniformemente en un rango. (plantilla de clase) |
(C++11) | Produce valores reales distribuidos uniformemente en un rango. (plantilla de clase) |
todas las demás distribuciones de números aleatorios |
Las siguientes funciones de la biblioteca estándar satisfacen GeneradorDeBitsAleatorioUniforme sin satisfacer MotorDeNúmerosAleatorios adicionalmente:
(C++11) | Generador de números aleatorios no determinista usando como fuente entropía hardware. (clase) |
[editar]Informes de defectos
Los siguientes informes de defectos de cambio de comportamiento se aplicaron de manera retroactiva a los estándares de C++ publicados anteriormente.
ID | Aplicado a | Comportamiento según lo publicado | Comportamiento correcto |
---|---|---|---|
P0898R3 | C++11 | No estaba claro si G::min() y G::max()debían ser expresiones constantes[1] | Se requiere. |
- ↑Antes de C++20, el requisito de complejidad temporal para estas expresiones era “tiempo de compilación”. Esta redacción es ambigua, ya que “complejidad temporal en tiempo de compilación” se puede interpretar como “se puede evaluar en tiempo de compilación” y “la complejidad temporal se puede determinar en tiempo de compilación”.
[editar]Véase también
(C++20) | Especifica que un tipo se califica como un generador de bits aleatorios uniforme. (concepto) |