leigh / mt-rand
PHP implementation of the MT19937 algorithm
Installs: 75 144
Dependents: 0
Suggesters: 0
Security: 0
Stars: 10
Watchers: 3
Forks: 5
Open Issues: 1
Requires
- php: >=5.5
Requires (Dev)
- phpunit/phpunit: ~5.0
This package is not auto-updated.
Last update: 2024-12-21 20:36:00 UTC
README
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);