#include #include #define MASK (0x7fffffffL) #define NORM (1.0/(1.0+MASK)) static long rand32(void) { unsigned long x; x = (rand()<<22) ^ (rand()<<11) ^ rand(); return x & MASK; } double frand(void) { double x; do { x = rand32() * NORM; x = (x + rand32()) * NORM; } while(x >= 1); return x; }