Namespaces
Variants

C++ named requirements: RandomNumberDistribution (since C++11)

From cppreference.net
C++ named requirements

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

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 D que 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 D que devuelve un parámetro de la distribución
  • declara un typedef miembro using distribution_type = D ;

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

produce valores enteros distribuidos uniformemente en un rango
(plantilla de clase)
produce valores reales distribuidos uniformemente a lo largo de un rango
(plantilla de clase)
produce bool valores según una distribución de Bernoulli
(clase)
produce valores enteros en una distribución binomial
(plantilla de clase)
produce valores enteros según una distribución binomial negativa
(plantilla de clase)
produce valores enteros en una Distribución geométrica
(plantilla de clase)
produce valores enteros según una distribución de Poisson
(plantilla de clase)
produce valores reales en una Distribución exponencial
(plantilla de clase)
produce valores reales según una distribución Gamma
(plantilla de clase)
produce valores reales en una distribución Weibull
(plantilla de clase)
produce valores reales en una Distribución de valor extremo
(plantilla de clase)
produce valores reales en una distribución normal estándar (Gaussiana)
(plantilla de clase)
produce valores reales en una distribución logarítmico-normal
(plantilla de clase)
produce valores reales en una distribución Chi-cuadrado
(plantilla de clase)
produce valores reales en una distribución de Cauchy
(plantilla de clase)
produce valores reales en una distribución F de Fisher
(plantilla de clase)
produce valores reales en una distribución t de Student
(plantilla de clase)
produce valores enteros 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)