Requisitos denominados de C++: RandomNumberDistribution (desde C++11)
Una DistribuciónDeNúmerosAleatorios es un objeto función que devuelve números aleatorios de acuerdo con una función de densidad de probabilidad p(x) o una distribución de probabilidad discreta P(x
i).
Requisitos
El tipo D satisface DistribuciónDeNúmerosAleatorios si
Dsatisface ConstruiblePorCopiaDsatisface AsignablePorCopia
Dados
T, el tipo denominado porD::result_typeP, el tipo denominado porD::param_type, que
- satisface ConstruiblePorCopia
- satisface AsignablePorCopia
- satisface ComparableEnIgualdad
- tiene un constructor que toma argumentos idénticos a cada uno de los constructores de
Dque toman argumentos correspondientes a los parámetros de distribución. - tiene una función miembro con mismo nombre, tipo y semántica que cualquier función miembro de
Dque devuelve un parámetro de la distribución. - declara un miembro typedef
using distribution_type = D;
d, un valor de tipoDxey, (que pueden ser constantes) valores de tipoDp, un (que puede ser constante) valor de tipoPg,g1,g2, l-valores de un tipo que satisface GeneradorDeBitsAleatorioUniformeos, l-valor de una especialización de std::basic_ostreamis, l-valor de una especialización de std::basic_istream
Las siguientes expresiones deben ser válidas y tener los efectos especificados
| Expresión | Tipo | Notas | Complejidad |
|---|---|---|---|
D::result_type |
T |
Un tipo aritmético | Tiempo de compilación |
D::param_type |
P |
Tiempo de compilación | |
D() |
Crea una distribución indistinguible de cualquier otra D construida por defecto |
Constante | |
D(p) |
Crea una distribución indistinguible de D construida directamente a partir de valores usados para construir p |
Igual que la construcción de p
| |
d.reset() |
void |
Reinicia el estado interno de la distribución. La siguiente llamada a operator() en d no dependerá de valores producidos por cualquier motor antes de reset() |
Constante |
x.param() |
P |
Devuelve p tal que D(p).param() == p |
No peor que D(p)
|
d.param(p) |
void |
Poscondición: d.param() == p |
No peor que D(p)
|
d(g) |
T |
La secuencia de números devueltos por invocaciones sucesivas de esta llamada con le mismo g se distribuyen aleatoriamente de acuerdo con la distribución parametrizada por d.param() |
Amortizado constante por el número de invocaciones de g
|
d(g,p) |
T |
La secuencia de números devueltos por invocaciones sucesivas de esta llamada con le mismo g se distribuyen aleatoriamente de acuerdo con la distribución parametrizada por p |
Amortizado constante por el número de invocaciones de g
|
x.min() |
T |
El límite inferior máximo de los valores potencialmente devueltos por el operator() de x , según se determina por los valores actuales de los parámetros de x |
Constante |
x.max() |
T |
El límite superior mínimo de los valores potencialmente devueltos por el operator() de x , según se determina por las valores actuales de los parámetros de x |
Constante |
x == y |
bool |
Establece una relación de equivalencia. Devuelve true si x.param() == y.param() y las futuras secuencias infinitas de valores que se generarían mediante invocaciones repetidas de x(g1) y y(g2) serían iguales siempre que g1 == g2 |
Constante |
x != y |
bool |
!(x == y) |
Constante |
os << x |
Referencia al tipo de os |
Escribe una representación textual de los parámetros de distribución y el estado interno de os. Las banderas de formato y el carácter de relleno de os no cambian |
|
is >> d |
Referencia al tipo de is |
CharT}} y Traits, de lo contrario, el comportamiento es indefinido. Si se encuentra una entrada incorrecta, se llama a is.setstate(std::ios::failbit), que puede lanzar la excepción std::ios_base::failure. d en esta caso no se modifica |
Notas
Los parámetros de un objeto de distribución se pueden cambiar de forma permanente, mediante el uso de d.param(p), o sólo durante la duración de una única llamada a operator(), mediante d(g,p).
Las llamadas a funciones miembro constante de la distribución y os << d no afectan la secuencia de números producida por la repetición de d(g).
Biblioteca estándar
Los siguientes componentes de la biblioteca estándar satisfacen DistribuciónDeNúmerosAleatorios
(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) |
(C++11) |
Produce valores bool en una distribución de Bernoulli (clase) |
(C++11) |
Produce valores enteros en una distribución binomial (plantilla de clase) |
| Produce valores enteros en una distribución binomial negativa (plantilla de clase) | |
(C++11) |
Produce valores enteros en una distribución geométrica (plantilla de clase) |
(C++11) |
Produce valores enteros en una distribución de poisson (plantilla de clase) |
(C++11) |
Produce valores reales en una distribución expotencial (plantilla de clase) |
(C++11) |
Produce valores reales en una distribución gamma (plantilla de clase) |
(C++11) |
Produce valores reales en una distribución de Weibull (plantilla de clase) |
(C++11) |
Produce valores reales en una distribución generalizada de valores extremos (plantilla de clase) |
(C++11) |
Produce valores reales en una distribución normal estándar (Gaussiana) (plantilla de clase) |
(C++11) |
Produce valores reales en una distribución log-normal (plantilla de clase) |
(C++11) |
Produce valores reales en una distribución ji al cuadrado (plantilla de clase) |
(C++11) |
Produce valores reales en una distribución de Cauchy (plantilla de clase) |
(C++11) |
Produce valores reales en una distribución F de Fisher (plantilla de clase) |
(C++11) |
Produce valores reales de una distribución t de Student (plantilla de clase) |
(C++11) |
Produce enteros aleatorios en una distribución discreta (plantilla de clase) |
| Produce valores reales distribuidos en subintervalos constantes (plantilla de clase) | |
| Produce valores reales distribuidos en subintervalos definidos (plantilla de clase) |