#include #include #include "Random.h" void Random::bubbleSort(int a[], int size) { for(int pass=1; passa[i+1]){ std::swap(a[i], a[i+1]); } } } double Random::gauss(double sdev, double mean) { double sum=0.0; for (int i=1;i<=12;++i) { seed_u = 1664525lu * seed_u + 123456789lu; sum+=double(seed_u); } return (sum/4.29497e9-6.0)*sdev+mean; } double Random::uniform(double a, double b) { double t; for(int i=0; i<10;i++){ seed=2045*seed+1; //seed=seed -(seed/1048576)*1048576; seed%=1048576; } t=seed/1048576.0; t=a+(b-a)*t; return(t); } int Random::uniform(int a, int b) // [a, b-1] { double t; int i, tt; if(b==a+1) return(a); for(i=0; i<10;i++){ seed=2045*seed+1; //seed=seed -(seed/1048576)*1048576; seed%=1048576; } t=seed/1048576.0; t=a+(b-a)*t; tt=(int)t; if(tt=b) tt=b-1; return(tt); } int Random::nonUniform(int a, int b) // [a, b-1] { double t; int i, tt; if(b==a+1) return(a); for(i=0; i<10;i++){ seed=2045*seed+1; //seed=seed -(seed/1048576)*1048576; seed%=1048576; } t=seed/1048576.0; t=a+(b-a)*pow(t, 0.6667); //t^1.5 tt=(int)t; if(tt=b) tt=b-1; return(tt); } /* void m_uniform(int a , int b, long int *seed, int *itmp, int num) { int index, imed, i, k; index=0; itmp[0]=uniform(a, b, seed); Loop1: imed=uniform(a, b, seed); k=0; for(i=0;i<=index;i++) if(imed==itmp[i]) {k=1; break;} if(k==0) {index++; itmp[index]=imed;} if(index