g105b/drng

该包最新版本(v1)没有提供许可信息。

确定性随机数生成器。

v1 2020-02-13 13:50 UTC

README

此库可以生成可转换为整数和浮点数的字节序列。生成的序列看似随机,但可以通过提供已知的种子值完全确定。该库的主要用途在于程序生成算法。

该库使用OpenSSL提供的加密算法生成随机数据,特别是使用高级加密标准(AES)在Galois/Counter模式(GCM)下操作。

每个Random类的实例都维护其AES计数器,因此理论上没有生成随机数据的限制。由于在生成初始化向量时计数器的持久性和从提供的种子值设置的加密密钥,此库的确定性属性成为可能。

安装

可以使用Composer将此库安装到您的项目中。composer require g105b/drng将安装最新版本。或者,您可以直接修改项目的composer.json文件。

{
        "require": {
                "g105b/drng": "1.*"        
        }
}

使用示例

使用字符串种子确定随机序列

string-seed.php:

use g105b\drng\Random;
use g105b\drng\StringSeed;

$rand = new Random(
        new StringSeed("i like cats")
);

echo "Random sequence: ";

for($i = 0; $i < 10; $i++) {
        if($i > 0) {
                echo ", ";        
        }

        echo $rand->getInt(1, 10);
}

由于使用了种子值“我喜欢猫”,上述示例将始终输出相同的序列。

Random sequence: 1, 9, 7, 6, 5, 6, 8, 10, 2, 5