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!

¿Fue útil?

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();
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top