/* Function: esl_gam_Sample() * Incept: SRE, Mon Nov 14 13:40:46 2005 [HHMI HQ] * * Purpose: Sample a gamma-distributed random variate. */ double esl_gam_Sample(ESL_RANDOMNESS *r, double mu, double lambda, double tau) { double x; x = esl_rnd_Gamma(r, tau); return (mu + x / lambda); }
/* Function: esl_sxp_Sample() * * Purpose: Sample a stretched exponential random variate, * by a change of variable from a Gamma sample. */ double esl_sxp_Sample(ESL_RANDOMNESS *r, double mu, double lambda, double tau) { double t,x; t = esl_rnd_Gamma(r, 1./tau); x = mu + 1./lambda * exp(1./tau * log(t)); return x; }