【发布时间】:2013-04-07 22:28:26
【问题描述】:
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,但仅限于第一次调用。
【问题讨论】:
-
我错过了什么吗?您是在问为什么随机数生成器会生成随机数?
-
啊,好吧,我确实错过了。哦。
标签: php javascript random mersenne-twister