Gamma Distribución en Boost
-
22-09-2019 - |
Pregunta
Estoy tratando de utilizar la distribución Gamma de impulso :: matemáticas, pero parece que no es posible utilizarlo con el impulso :: variate_generator. Puede alguien confirmar eso? ¿O hay una manera de utilizarlo.
he descubierto que hay un impulso :: gamma_distribution indocumentado que, probablemente, se podría utilizar también, pero sólo permite elegir el parámetro alfa de la distribución y no la versión beta.
Gracias!
Solución
Como se mencionó en este enlace , se puede extender (o de TR1) uno de Boost distribución -parámetro gamma simplemente multiplicando la salida del generador de números aleatorios por su escala deseada.
A continuación se muestra el código de ejemplo que utiliza variate_generator
para dibujar números de una distribución gamma, parametrizado por media y la varianza:
#include <boost/random.hpp>
#include <boost/random/gamma_distribution.hpp>
double rgamma( double mean, double variance, boost::mt19937& rng ) {
const double shape = ( mean*mean )/variance;
double scale = variance/mean;
boost::gamma_distribution<> gd( shape );
boost::variate_generator<boost::mt19937&,boost::gamma_distribution<> > var_gamma( rng, gd );
return scale*var_gamma();
}