2010-03-26 6 views
2

J'essaie d'utiliser la distribution Gamma de boost :: math mais il semble qu'il ne soit pas possible de l'utiliser avec boost :: variate_generator. Quelqu'un pourrait-il confirmer cela? Ou est-il un moyen de l'utiliser.Distribution gamma dans Boost

J'ai découvert qu'il existe un boost :: gamma_distribution non documenté qui pourrait probablement aussi être utilisé mais il ne permet que de choisir le paramètre alpha de la distribution et non la beta.

Merci!

Répondre

4

Comme mentionné dans this link, vous pouvez étendre la distribution gamma à un paramètre de Boost (ou TR1) simplement en multipliant la sortie de la rng par l'échelle souhaitée.

est un exemple de code ci-dessous qui utilise variate_generator pour tirer les numéros d'une distribution gamma, paramétrées par moyenne et la variance:

#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(); 
} 
+0

c'est agréable, vous pouvez également obtenir gamma inverse de ce – pyCthon

Questions connexes