#include #include #include #include #include #include #include #include "mcrandom.h" /*static int initlib = 0; static int randfd = 0; */ double random01( void ) { #if 0 if( !initlib ) { unsigned long init[4]={0x123, 0x234, 0x345, 0x456}, length=4; init_by_array( init, length ); /*init_genrand(19650218UL);*/ } return ((double)genrand_int32())*(1.0/4294967295.0); /* divided by 2^32-1 */ #endif double r1 = drand48(); double r2 = drand48(); double tmp = sqrt( -2.0 * log( r1 ) ) * cos( 2.0 * M_PI * r2 ); return ( tmp / 2.0 ) + 0.5; // return drand48(); /* unsigned char r1, r2, r3, r4; unsigned int reet; if( !initlib ) { randfd = open( "/dev/random", O_RDONLY ); initlib = 1; } read( randfd, &r1, 1 ); read( randfd, &r2, 1 ); read( randfd, &r3, 1 ); read( randfd, &r4, 1 ); reet = (r1 << 24) | (r2 << 16) | (r3 << 8) | r4; return ((double)reet)*(1.0/4294967295.0); */ }