diff --git a/sim.c b/sim.c index 151b04c..85abdf4 100644 --- a/sim.c +++ b/sim.c @@ -2,7 +2,14 @@ #include #include "fec.h" -#define MAX_RANDOM 0x7fffffff +#ifdef _WIN32 +/* MinGW's C runtime provides rand(), but not the POSIX random(). */ +#define fec_random rand +#define MAX_RANDOM RAND_MAX +#else +#define fec_random random +#define MAX_RANDOM 0x7fffffff +#endif /* Generate gaussian random double with specified mean and std_dev */ double normal_rand(double mean, double std_dev) @@ -20,8 +27,8 @@ double normal_rand(double mean, double std_dev) * that are inside the unit circle */ do { - v1 = 2.0 * (double)random() / MAX_RANDOM - 1; - v2 = 2.0 * (double)random() / MAX_RANDOM - 1; + v1 = 2.0 * (double)fec_random() / MAX_RANDOM - 1; + v2 = 2.0 * (double)fec_random() / MAX_RANDOM - 1; rsq = v1*v1 + v2*v2; } while(rsq >= 1.0 || rsq == 0.0); fac = sqrt(-2.0*log(rsq)/rsq);