From: kusano Date: Thu, 17 Dec 2015 10:26:38 +0000 (+0900) Subject: Fix #71152: mt_rand() returns the different values from original mt19937ar.c X-Git-Tag: php-7.0.5RC1~111 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=6f6bd8ce531636134efd5f669a4e8373fb2e9e51;p=php Fix #71152: mt_rand() returns the different values from original mt19937ar.c --- diff --git a/ext/standard/rand.c b/ext/standard/rand.c index 2dd05e70bb..bc32f24e0b 100644 --- a/ext/standard/rand.c +++ b/ext/standard/rand.c @@ -146,7 +146,7 @@ PHPAPI zend_long php_rand(void) #define loBits(u) ((u) & 0x7FFFFFFFU) /* mask the highest bit of u */ #define mixBits(u, v) (hiBit(u)|loBits(v)) /* move hi bit of u to hi bit of v */ -#define twist(m,u,v) (m ^ (mixBits(u,v)>>1) ^ ((php_uint32)(-(php_int32)(loBit(u))) & 0x9908b0dfU)) +#define twist(m,u,v) (m ^ (mixBits(u,v)>>1) ^ ((php_uint32)(-(php_int32)(loBit(v))) & 0x9908b0dfU)) /* {{{ php_mt_initialize */ diff --git a/ext/standard/tests/math/mt_rand_value.phpt b/ext/standard/tests/math/mt_rand_value.phpt new file mode 100644 index 0000000000..eeb009e4b4 --- /dev/null +++ b/ext/standard/tests/math/mt_rand_value.phpt @@ -0,0 +1,53 @@ +--TEST-- +Test mt_rand() - returns the exact same values as mt19937ar.c +--FILE-- + +--EXPECTF-- +527860569 +1711027313 +1280820687 +688176834 +770499160 +412773096 +813703253 +898651287 +52508912 +757323740 +511765911 +274407457 +833082629 +1923803667 +1461450755 +1301698200 + +1612214270