// +====================================================================================== // | RANDOM NUMBER GENERATOR // +====================================================================================== /* - initialize: srand(time(NULL)); - integer: macro randint(MAX+1) - uniform: macro randuni() - gaussian: function randnorm() */ #define randint(MAX) (random()%(MAX)) #define randuni() (random()/(RAND_MAX+1.)) double randnorm() { static int iset = 0; static double gset; double fac, rsq, v1, v2; if(iset==0) { do { v1=2.*randuni()-1.; v2=2.*randuni()-1.; rsq=v1*v1+v2*v2; } while (rsq>=1.||rsq==0.); fac=sqrt(-2.0*log(rsq)/rsq);gset=v1*fac;iset=1; return v2*fac; } else { iset = 0; return gset; } }