tmarsteel / dprng
确定性伪随机数生成器
Requires
- php: >=5.4
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之间的均匀分布整数。