mirror of
https://github.com/php/php-src.git
synced 2024-12-12 19:33:31 +08:00
Revert "Fix #71152: mt_rand() returns the different values from original mt19937ar.c"
This reverts commit 6f6bd8ce53
.
`mt_rand()` is seedable with `mt_srand()` which means it can be used to (re)produce specific streams of numbers. All code (no matter how few instances that may be) that previously depended on this behaviour will no longer produce the same results.
This kind of change needs to be discussed before being committed.
This commit is contained in:
parent
aa383d633e
commit
a0724d3081
@ -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(v))) & 0x9908b0dfU))
|
#define twist(m,u,v) (m ^ (mixBits(u,v)>>1) ^ ((php_uint32)(-(php_int32)(loBit(u))) & 0x9908b0dfU))
|
||||||
|
|
||||||
/* {{{ php_mt_initialize
|
/* {{{ php_mt_initialize
|
||||||
*/
|
*/
|
||||||
|
@ -1,53 +0,0 @@
|
|||||||
--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…
Reference in New Issue
Block a user