Ejemplo n.º 1
0
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) ;
}
Ejemplo n.º 2
0
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) ;
}
Ejemplo n.º 3
0
void ranmultinom(int *samp, int n, double *p, int len) 
// multinomial sample p is prob dist  n samples returned
// work is O(len^2) which is silly 
{
  int x ;
  double *pp ;

  if (len==0) return ;   
  ivzero(samp, len) ;
  if (n<=0) return ;

   if (len==1)  { 
    samp[0] = n ;
    return ;
   }

   ZALLOC(pp, len, double) ;
   copyarr(p, pp, len) ;
   bal1(pp, len) ;

   samp[0] = x = ranbinom(n, pp[0]) ;
   ranmultinom(samp+1, n-x, p+1, len-1) ;
   free(pp) ;
}