PHP与Javascript中MT实现中相同种子的不同输出

时间:2012-11-19 09:57:28

标签: php algorithm mersenne-twister

我正在尝试在PHP中实现 Mersenne Twister 算法。我从http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/VERSIONS/JAVASCRIPT/java-script.html

采用了Javascript实现

我几乎从上面的js代码进行了一行到一行的转换。但是,为给定种子生成的随机数在PHP中是不同的。

在PHP中实现(选择数据类型等)时是否有任何特定的步骤?

以下代码段

/************* PHP ***************************/


<?php

require_once "mersenne_twister.php";
use mersenne_twister\twister;

$range = array(1,2,3,5,6,7,8,9,12,13,15);
$twister1 = new twister(1347299472.0059);
$t1 =  $twister1->int32()* (1.0 / 4294967296.0) ;
$foo = $t1 * count($range);
echo $foo;


/************* Javascript ***************************/

var seed = 1347299472.0059;
var range = [1,2,3,5,6,7,8,9,12,13,15];// the numbers to chose from
var foo = Math.floor(genrand_float(range ) * range .length);
document.write(foo);

$ twister1-&gt; int32()*(1.0 / 4294967296.0) genrand_float(范围)提供不同的输出。

谢谢,

1 个答案:

答案 0 :(得分:1)

mt_rand()函数已经实现了Mersenne Twister算法,不需要编写自己的版本。