示例#1
0
文件: gds.c 项目: yiqinyang2/SOAPpop
double ranbeta(double a, double b) 
{
   double xa, xb ;

   if ((a<=0.0) || (b<=0.0)) fatalx("(ranbeta) bad parameters: %9.3f %9.3f\n", a, b) ;
   xa = rangam(a) ;
   xb = rangam(b) ;
   return xa/(xa+xb) ;
}
示例#2
0
文件: gds.c 项目: yiqinyang2/SOAPpop
double ranchi (int d) 
{
  double y ; 

  y = 2.0 * rangam(0.5 * (double) d) ;
  return y ;

}
示例#3
0
文件: gds.c 项目: yiqinyang2/SOAPpop
void randirichlet(double *x, double *pp, int n) 
/** 
 generate dirichlet r.v. parameters pp
*/
{
  double y ;
  int i ;

  for (i=0; i<n; i++) { 
   x[i] = rangam(pp[i]) ;
  }
  bal1(x,n) ;
}
示例#4
0
文件: gds.c 项目: yiqinyang2/SOAPpop
double rant(double df)
// t distribution df > 0
{
  static double p = -1, olddf = -1.0  ;
  static double zkon ;
  double y  ;
  
  if (df <=- 0.0) fatalx("(rant) %9.3f\n") ;
  
  p = df/2.0 ;
  zkon = sqrt(p) ;  // variance of t is p/(p-1) if p > 1
  y = rangam(p)  ;  
  if (y==0.0) y = p ;  // special case to avoid overflow ;
  return gauss() * zkon / sqrt(y) ;
} 
示例#5
0
文件: gds.c 项目: chrchang/eigensoft
void randirichlet(double *x, double *pp, int n) 
/** 
 generate dirichlet r.v. parameters pp
*/
{
  int i ;

  vzero(x, n) ;
  for (i=0; i<n; i++) { 
   if (pp[i] > 0.0) {
    x[i] = rangam(pp[i]) ;
   }
  }
  bal1(x,n) ;
}
示例#6
0
文件: gds.c 项目: yiqinyang2/SOAPpop
double gds(  double a)

{
 return rangam(a) ;
}