//FM.cc #include "FM.hh" unsigned long FM::power(int i, int k){ unsigned long iout = (unsigned long)i; if(k > 1) iout = iout*power(iout, k-1); return iout; } FM::FM(){ a=630360016; expFor2 = 31; } void FM::ranGen(unsigned long seed, int n, double* pu){ unsigned long m = power(2,expFor2)-1; for(int i = 0; i< n; i++){ seed = (a*seed)%m; pu[i] = ((double)seed)/((double)m); } }