12 #ifndef ECL_TIME_RANDOM_NUMBER_GENERATOR_HPP_    13 #define ECL_TIME_RANDOM_NUMBER_GENERATOR_HPP_    22 #include <ecl/config.hpp>    24 #if defined(ECL_IS_WIN32)    41 class RandomNumberGenerator
    56     return (
uniform()-0.5)*2.0*range;
    61     return static_cast<T
>(rand())/static_cast<T>(RAND_MAX);
    68     static bool use_last = 
false;
    80           w = x1 * x1 + x2 * x2;
    83       w = std::sqrt( (-2.0 * std::log( w ) ) / w );
   113     unsigned long a = clock();
   114     unsigned long b = ::time(NULL);
   115     unsigned long c = getpid();
   116     a=a-b;  a=a-c;  a=a^(c >> 13);
   117     b=b-c;  b=b-a;  b=b^(a << 8);
   118     c=c-a;  c=c-b;  c=c^(b >> 13);
   119     a=a-b;  a=a-c;  a=a^(c >> 12);
   120     b=b-c;  b=b-a;  b=b^(a << 16);
   121     c=c-a;  c=c-b;  c=c^(b >> 5);
   122     a=a-b;  a=a-c;  a=a^(c >> 3);
   123     b=b-c;  b=b-a;  b=b^(a << 10);
   124     c=c-a;  c=c-b;  c=c^(b >> 15);
 
T gaussian(const T &std, const T &mu=0)