gpt4 book ai didi

php - 为什么我从 JS 和 PHP Mersenne Twister 实现中得到不同的值?

转载 作者:行者123 更新时间:2023-11-30 13:04:58 25 4
gpt4 key购买 nike

1)在 PHP 中,当我使用 native 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,但仅限于第一次调用。

最佳答案

Mersenne twister 是 PRNG 的一个,而不是一个单一的算法。算法中使用的梅森素数可能不同,不同的素数对于相同的种子会产生不同的结果。

关于php - 为什么我从 JS 和 PHP Mersenne Twister 实现中得到不同的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16021431/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com