2012-11-19 2 views
1

Mersenne Twister 알고리즘을 PHP로 구현하려고합니다. 나는 자바 스크립트 구현을 가져왔다. http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/VERSIONS/JAVASCRIPT/java-script.htmlPHP에서 MT 구현의 동일한 시드에 대해 서로 다른 출력이 있습니다.

나는 위의 js 코드에서 거의 라인 변환을했다. 그러나 주어진 seed에 대해 생성 된 난수는 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는 (범위) 다른 출력을 제공한다. mt_rand() 기능은 이미 메르 센 트위스터 알고리즘을 구현

답변

1

덕분에, 당신의 자신의 버전을 쓸 필요가 없습니다.

+0

mt_rand() 함수는 시드 값을 허용하지 않습니다. myown의 seed 값을 제공해야합니다. –

+0

그런 다음,'mt_srand()'를 사용하거나 원래의 계획을 따르고 모든 것을 다시 구현할 수 있습니다. 그러나 도움이 필요하면 현재 코드를 제공해야합니다. –

+0

http://kingfisher.nfshost.com/sw/twister/는 PHP 구현입니다. 자바 스크립트 구현은 @ https://gist.github.com/300494입니다. –