Back to index

See source file

CRandom.h

 
//----------------------------------------------------------------------------- 
//  $Header: /tmp_mnt/asis/offline/ceres/cool/project/RCS/CRandom.h,v 2.1 1996/10/04 08:45:38 voigt Exp $ 
// 
//  COOL Program Library   
//  Copyright (C) CERES collaboration, 1996 
// 
//  Declaration of class CRandom 
// 
//----------------------------------------------------------------------------- 
#ifndef CRANDOM_H 
#define CRANDOM_H 
 
#include "cool.h"  
#include <stdlib.h>  
#include <math.h>  
 
class CRandom {  
public:  
  CRandom();  
  CRandom(long);  
  ~CRandom();  
 
  inline void   setSeed(long); 
   
  inline double flat();				// range [0,1[ 
  inline double flat(double a);			// range [0,a[ 
  inline double flat(double a, double b);	// range [a,b[ 
   
  inline long   intFlat(long n);		// range [0,n[ 
  inline long   intFlat(long n, long m);	// range [n,m[ 
   
  inline double exponential();			// mean 1 
  inline double exponential(double a);		// mean a 
   
  double        gauss();			// mean 0, sigma 1 
  inline double gauss(double m, double s);	// mean m, sigma s 
   
  long          poisson(double m);		// mean m 
   
private:  
  double   nextGauss; 
  CBoolean nextGaussPresent; 
};  
 
void   CRandom::setSeed(long seed) { srand48(seed); } 
 
double CRandom::flat() { return drand48(); } 
 
double CRandom::flat(double a) { return a*flat(); } 
 
double CRandom::flat(double a, double b) { return (b-a)*flat()+a; } 
 
long   CRandom::intFlat(long n) { return long(flat()*double(n)); } 
 
long   CRandom::intFlat(long n, long m) { return n + intFlat(m-n); } 
 
double CRandom::exponential() { return -log(flat()); } 
 
double CRandom::exponential(double mean) { return -log(flat())*mean; } 
 
double CRandom::gauss(double m, double s) { return gauss()*s + m; } 
 
#endif /* CRANDOM_H */  

Back to index

See source file