1) 在 PHP 中当我使用原生 php MT 实现时
mt_srand(1);
var_dump(mt_rand());
var_dump(mt_rand());
var_dump(mt_rand());
我得到价值观
1244335972
15217923
1546885062
2)在这个 Mersenne Twister 实现
http://kingfisher.nfshost.com/sw/twister/
我运行
$twister = new twister(1);
var_dump($twister->int31());
var_dump($twister->int31());
var_dump($twister->int31());
并得到
1791095845
2135392491
946286476
3)在 JS 我使用
http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/VERSIONS/JAVASCRIPT/java-script.html
m = new MersenneTwister(1)
m.genrand_int31()
m.genrand_int31()
m.genrand_int31()
并得到
895547922
2141438069
1546885062
怎么会发生?
实际上,这在 JS
m = new MersenneTwister(1)
m.genrand_int32()
1791095845
这在 PHP
$twister = new twister(1);
var_dump($twister->int32());
返回相同的值 1791095845,但仅适用于第一次调用。