tmarsteel/dprng

确定性伪随机数生成器

1.0.1 2016-02-12 22:51 UTC

This package is not auto-updated.

Last update: 2024-09-13 15:23:17 UTC


README

旨在几乎任何通用编程语言中简单实现的DPRNG算法的实现。其预期用途是简单的游戏;需要以低内存和计算成本可重放的伪随机序列的场景。**该算法不安全。请勿用于安全相关任务。**

可以在此处找到生成相同盐/种子相等序列的JavaScript实现:这里

请用你喜欢的语言贡献你自己的实现!算法描述和测试向量可以在algorithm.md中找到。我会交叉链接兼容的分支:)

安装与使用

composer require tmarsteel/php-dprng:1.* 或者直接下载单个类文件:这里

use tmarsteel\dprng\DPRNG;

// secure random numbers (seeded from mcrypt_create_iv() if available, rand() otherwise)
$rng = new DPRNG();

// deterministic random sequence
$seed = 0xA2F38C0;
$rng = new DPRNG($seed);

// generate random numbers
$random = $rng->next(); // random float from 0 inclusive to 1 exclusive (same range as Math.random())

$random = $rng->nextInt(14, 300); // random integer in the range 14 to 299

$bytes = $rng->nextBytes(30); // 30 random integers in the range 0 to 255

熵/随机性检查

ENT 是一个检查字节或比特序列的熵和随机性的整洁程序。此表比较了其输出与rand()、mcrypt_create_iv()和此DPRNG返回的值。有关指标的说明,请参阅ENT网站 **这些数字仅表明此DPRNG的输出足够随机,对人类来说是不可区分的随机噪声。计算机将能够根据一个极小的样本计算出初始盐!**

您可以使用ent可执行文件和entTestfile.php脚本来运行这些测试。
(a) 源 = MCRYPT_DEV_RANDOM
(b) 源 = MCRYPT_DEV_URANDOM

方法

以下是tmarsteel\dprng\DPRNG对象支持的所有方法的完整列表以及它们的签名和合约

float next()
返回范围[0, 1)(包含0,不包含1)的均匀分布浮点值。

float nextFloat(float $from, float $to)
返回范围[$from, $to)(包含$from,不包含$to)的均匀分布浮点值。

int nextInt(int $from, int $to)
返回范围[$from, $to](包含$from和$to)的均匀分布整数。

array nextBytes(int $n)
返回长度为$n的数组。每个条目是0到255之间的均匀分布整数。