From f0e8e352004947f3f4de01ee766b8e6a324e7c29 Mon Sep 17 00:00:00 2001 From: Uladzimir Karpenka Date: Tue, 23 Jun 2026 10:59:05 +0300 Subject: [PATCH] Fix MinGW random number compatibility --- sim.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) 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);