leigh/mt-rand

MT19937算法的PHP实现

0.1.0 2016-02-25 13:26 UTC

This package is not auto-updated.

Last update: 2024-09-14 18:58:36 UTC


README

此库包含Mersenne Twister伪随机数生成算法的纯PHP实现。

有3个类可用

MersenneTwister\MT

这是按照算法作者定义的Mersenne Twister算法。

它可以在32位和64位的PHP构建上运行,并输出32位整数。

$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

这是按照算法作者定义的64位Mersenne Twister算法。

它**仅在64位PHP构建上运行**,并输出64位整数。

$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

这是在PHP 5.2.1+中定义的Mersenne Twister算法。它与原始算法略有不同,并输出不同的数字集

它可以在32位和64位的PHP构建上运行,并输出32位整数。

$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);