From 72ff623baccc6ab5256f235642230a9bd0cbf2fb Mon Sep 17 00:00:00 2001 From: Dariusz Murakowski Date: Thu, 16 Jul 2015 00:11:49 -0400 Subject: [PATCH] Uniform random integer generation (by rejection sampling). --- mtrnd.h | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/mtrnd.h b/mtrnd.h index e74c18d..501e891 100644 --- a/mtrnd.h +++ b/mtrnd.h @@ -183,6 +183,17 @@ public: unsigned long a=genrand_int32()>>5, b=genrand_int32()>>6; return(a*67108864.0+b)*(1.0/9007199254740992.0); } + + /* generates a random number on [low,high] closed interval */ + int uniform_int_closed(int low, int high) + { + const unsigned long MT_RAND_MAX = 0x7fffffff; + int range = high - low + 1; + int secureMax = 1 + (MT_RAND_MAX - MT_RAND_MAX % range); + int x; + do x = genrand_int31(); while (x > secureMax); + return low + x % range; + } }; } #endif -- 2.7.4