Skip to content
/ PHP-MT19937 Public

PHP implementations of MT19937, MT19937-64 and PHPs MT variant

License

Notifications You must be signed in to change notification settings

lt/PHP-MT19937

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Mersenne Twister written in PHP

This library contains pure PHP implementations of the Mersenne Twister pseudo-random number generation algorithm.

There are 3 classes available

MersenneTwister\MT

This is the Mersenne Twister algorithm as defined by the algorithm authors.

It works on both 32 and 64 bit builds of PHP and outputs 32 bit integers.

$mt = new \MersenneTwister\MT();
$mt->init(1234); // mt_srand(1234);
$mt->int31();    // int31() per mt19937ar.c, positive values only
$mt->int32();    // int32() per mt19937ar.c, high bit sets sign

MersenneTwister\MT64

This is the 64-bit Mersenne Twister algorithm as defined by the algorithm authors.

It works only on 64 bit builds of PHP and outputs 64 bit integers.

$mt = new \MersenneTwister\MT64();
$mt->init(1234);
$mt->int63();    // int63() per mt19937-64.c, positive values only
$mt->int64();    // int64() per mt19937-64.c, high bit sets sign

MersenneTwister\PHPVariant

This is the Mersenne Twister algorithm as defined in PHP 5.2.1+. It is slightly different from the original algorithm and outputs a different set of numbers

It works on both 32 and 64 bit builds of PHP and outputs 32 bit integers.

$mt = new \MersenneTwister\MT();
$mt->init(1234);     // mt_srand(1234);
$mt->int31();        // mt_rand();

// Breaks on huge ranges (i.e. PHP_INT_MIN, PHP_INT_MAX)
// PHP also breaks on huge ranges, but breaks differently.
$mt->rand(min, max); // mt_rand(min, max);

About

PHP implementations of MT19937, MT19937-64 and PHPs MT variant

Resources

License

Stars

Watchers

Forks

Packages

No packages published