gengamma.m
上传用户:hfch80
上传日期:2007-10-25
资源大小:3637k
文件大小:1k
源码类别:

行业发展研究

开发平台:

Matlab

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