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

标签 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->int32() * (1.0/4294967296.0)genrand_float(range) 给出不同的输出。

谢谢,

最佳答案

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

关于php - PHP 与 Javascript 中 MT 实现中相同种子的不同输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13451368/

相关文章:

php - Yii2: Jui Auto Complete Widget 如何实现?

algorithm - 子串算法

c - 如何找到具有邻接矩阵表示的有向图的通用接收器

c++ - 创建随机 double 范围内的随机整数

c - 使用 dSFMT 进行随机 float (0,1)

php - Azure 表存储 Rest API

php - mysql查询中的多个连接

c++ - C++ 11 中 Mersenne Twister 的最佳常量种子

javascript - 使用 PHP 和 Javascript 将字母数字值作为函数内的参数传递时出现错误

c++ - 解决我的代码中未通过测试用例的错误