gengamma.m
上传用户:fsbooksir
上传日期:2013-10-19
资源大小:14k
文件大小:1k
源码类别:

matlab例程

开发平台:

Matlab

  1. function x = gengamma(alpha, beta)
  2. if (alpha==1)
  3.    x = -log(1-rand(1,1))/beta;
  4.    return
  5. end
  6. flag=0;       % teste si alpha<1 ou alpha>1
  7. if (alpha<1)
  8.    flag=1;
  9.    alpha=alpha+1;
  10. end
  11. gamma=alpha-1;
  12. eta=sqrt(2.0*alpha-1.0);
  13. c=.5-atan(gamma/eta)/pi;
  14. aux=-.5;
  15. while(aux<0)
  16.    y=-.5;
  17.    while(y<=0)
  18.       u=rand(1,1);  
  19.       y = gamma + eta * tan(pi*(u-c)+c-.5);
  20.    end
  21.    v=-log(rand(1,1));
  22.    aux=v+log(1.0+((y-gamma)/eta)^2)+gamma*log(y/gamma)-y+gamma;
  23. end;
  24. if (flag==1)
  25.    x = y/beta*(rand(1))^(1.0/(alpha-1));
  26. else
  27.    x = y/beta;
  28. end