C++ named requirements: RandomNumberDistribution (since C++11)
Una RandomNumberDistribution 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
RandomNumberDistribution
si
-
Dsatisface CopyConstructible -
Dsatisface CopyAssignable
Dado
-
T, el tipo nombrado por D :: result_type -
P, el tipo nombrado por D :: param_type , que
-
- satisface CopyConstructible
- satisface CopyAssignable
- satisface EqualityComparable
-
tiene un constructor que toma argumentos idénticos a cada uno de los constructores de
Dque toman argumentos correspondientes a los parámetros de la distribución -
tiene una función miembro con el mismo nombre, tipo y semántica, que cada función miembro de
Dque devuelve un parámetro de la distribución - declara un typedef miembro using distribution_type = D ;
-
d, un valor de tipoD -
xyy, valores (posiblemente const) de tipoD -
p, un valor (posiblemente const) de tipoP -
g,g1,g2, lvalues de un tipo que satisface UniformRandomBitGenerator -
os, lvalue de una especialización de std::basic_ostream -
is, lvalue de una especialización de std::basic_istream
Las siguientes expresiones deben ser válidas y tener sus 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 con los valores utilizados para construir
p
|
Igual que la construcción de
p
|
|
d.reset()
|
void
|
Restablece el estado interno de la distribución. La siguiente llamada a
operator()
en
d
no dependerá de valores producidos por ningún motor previo a
reset()
|
Constante |
x.param()
|
P
|
Devuelve
p
tal que
D
(
p
)
.
param
(
)
==
p
|
No peor que
D(p)
|
d.param(p)
|
void
|
Postcondició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 el mismo
g
están distribuidos aleatoriamente según la distribución parametrizada por
d.param()
|
Número amortizado constante de invocaciones de
g
|
d(g,p)
|
T
|
La secuencia de números devueltos por invocaciones sucesivas de esta llamada con el mismo
g
están distribuidos aleatoriamente según la distribución parametrizada por
p
|
Número amortizado constante de invocaciones de
g
|
x.min()
|
T
|
El límite inferior máximo en los valores potencialmente devueltos por
operator()
de
x
, determinado por los valores actuales de los parámetros de
x
|
Constante |
x.max()
|
T
|
El límite superior mínimo en los valores potencialmente devueltos por
operator()
de
x
, determinado por los 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 serían generadas por 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 estado interno en
os
. Los indicadores de formato y carácter de relleno de
os
permanecen sin cambios
|
|
is >> d
|
Referencia al tipo de
is
|
Restaura los parámetros de distribución y estado interno con datos leídos de
is
. Los indicadores de formato de
is
permanecen sin cambios. Los datos deben haber sido escritos usando un flujo con la misma configuración regional,
CharT
y
Traits
como parámetros de plantilla del flujo, de lo contrario el comportamiento es indefinido. Si se encuentra entrada incorrecta,
is.
setstate
(
std
::
ios
::
failbit
)
es llamado, lo que puede lanzar
std::ios_base::failure
.
d
permanece sin cambios en ese caso
|
Notas
Los parámetros de un objeto de distribución pueden cambiarse de forma permanente, usando d. param ( p ) o solo durante la duración de una única llamada a operator(), usando d ( g,p ) .
Las llamadas a funciones miembro const de la distribución y os << d no afectan la secuencia de números producida por repetidas d ( g ) .
Biblioteca estándar
Los siguientes componentes de la biblioteca estándar satisfacen RandomNumberDistribution
|
(C++11)
|
produce valores enteros distribuidos uniformemente en un rango
(plantilla de clase) |
|
(C++11)
|
produce valores reales distribuidos uniformemente a lo largo de un rango
(plantilla de clase) |
|
(C++11)
|
produce
bool
valores según una
distribución de Bernoulli
(clase) |
|
(C++11)
|
produce valores enteros en una
distribución binomial
(plantilla de clase) |
|
(C++11)
|
produce valores enteros según 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 según una
distribución de Poisson
(plantilla de clase) |
|
(C++11)
|
produce valores reales en una
Distribución exponencial
(plantilla de clase) |
|
(C++11)
|
produce valores reales según una
distribución Gamma
(plantilla de clase) |
|
(C++11)
|
produce valores reales en una
distribución Weibull
(plantilla de clase) |
|
(C++11)
|
produce valores reales en una
Distribución de valor extremo
(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 logarítmico-normal
(plantilla de clase) |
|
(C++11)
|
produce valores reales en una
distribución Chi-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 en una
distribución t de Student
(plantilla de clase) |
|
(C++11)
|
produce valores enteros en una distribución discreta
(plantilla de clase) |
|
(C++11)
|
produce valores reales distribuidos en subintervalos constantes
(plantilla de clase) |
|
(C++11)
|
produce valores reales distribuidos en subintervalos definidos
(plantilla de clase) |