mirror of
https://github.com/php/php-src.git
synced 2025-08-17 14:38:49 +02:00
Fix #71152: mt_rand() returns the different values from original mt19937ar.c
This commit is contained in:
parent
817ed01320
commit
d31e8a9a85
2 changed files with 54 additions and 1 deletions
|
@ -146,7 +146,7 @@ PHPAPI zend_long php_rand(void)
|
||||||
#define loBits(u) ((u) & 0x7FFFFFFFU) /* mask the highest bit of u */
|
#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 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
|
/* {{{ php_mt_initialize
|
||||||
*/
|
*/
|
||||||
|
|
53
ext/standard/tests/math/mt_rand_value.phpt
Normal file
53
ext/standard/tests/math/mt_rand_value.phpt
Normal file
|
@ -0,0 +1,53 @@
|
||||||
|
--TEST--
|
||||||
|
Test mt_rand() - returns the exact same values as mt19937ar.c
|
||||||
|
--FILE--
|
||||||
|
<?php
|
||||||
|
|
||||||
|
mt_srand(12345678);
|
||||||
|
|
||||||
|
for ($i=0; $i<16; $i++) {
|
||||||
|
echo mt_rand().PHP_EOL;
|
||||||
|
}
|
||||||
|
echo PHP_EOL;
|
||||||
|
|
||||||
|
$x = 0;
|
||||||
|
for ($i=0; $i<1024; $i++) {
|
||||||
|
$x ^= mt_rand();
|
||||||
|
}
|
||||||
|
echo $x.PHP_EOL;
|
||||||
|
|
||||||
|
/*
|
||||||
|
excpect values are obtained from original mt19937ar.c as follows:
|
||||||
|
|
||||||
|
int i, x;
|
||||||
|
init_genrand(12345678);
|
||||||
|
for (i=0; i<16; i++) {
|
||||||
|
printf("%d\n", genrand_int31());
|
||||||
|
}
|
||||||
|
printf("\n");
|
||||||
|
x = 0;
|
||||||
|
for (i=0; i<1024; i++) {
|
||||||
|
x ^= genrand_int31();
|
||||||
|
}
|
||||||
|
printf("%d\n", x);
|
||||||
|
*/
|
||||||
|
?>
|
||||||
|
--EXPECTF--
|
||||||
|
527860569
|
||||||
|
1711027313
|
||||||
|
1280820687
|
||||||
|
688176834
|
||||||
|
770499160
|
||||||
|
412773096
|
||||||
|
813703253
|
||||||
|
898651287
|
||||||
|
52508912
|
||||||
|
757323740
|
||||||
|
511765911
|
||||||
|
274407457
|
||||||
|
833082629
|
||||||
|
1923803667
|
||||||
|
1461450755
|
||||||
|
1301698200
|
||||||
|
|
||||||
|
1612214270
|
Loading…
Add table
Add a link
Reference in a new issue