Path: blob/master/notebooks/book2/12/rjmcmc_rbf/gengamma.m
1193 views
function x = gengamma(alpha, beta)1% USED TO SAMPLE FROM A GAMMA DISTRIBUTION.23% AUTHOR: ARNAUD DOUCET.45% si alpha=1, on a une exponentielle beta6if (alpha==1)7x = -log(1-rand(1,1))/beta;8return9end10flag=0; % teste si alpha<1 ou alpha>111if (alpha<1)12flag=1;13alpha=alpha+1;14end15gamma=alpha-1;16eta=sqrt(2.0*alpha-1.0);17c=.5-atan(gamma/eta)/pi;18aux=-.5;19while(aux<0)20y=-.5;21while(y<=0)22u=rand(1,1);23y = gamma + eta * tan(pi*(u-c)+c-.5);24end25v=-log(rand(1,1));26aux=v+log(1.0+((y-gamma)/eta)^2)+gamma*log(y/gamma)-y+gamma;27end;2829if (flag==1)30x = y/beta*(rand(1))^(1.0/(alpha-1));31else32x = y/beta;33end343536