(PHP 8 >= 8.2.0)
Random\Engine\Mt19937::__construct — 构造一个新的 Mt19937 引擎
由于 Mt19937(“梅森旋转器”)引擎只接受一个 32 位整数作为种子,因此即使 Mt19937 的周期非常大,为 219937-1,可能的随机序列数量也仅限于 232(即 4,294,967,296)。
当依赖于隐式或显式随机播种时,重复将在更早的时间出现。根据生日问题,在随机生成少于 80,000 个种子后,重复的种子以 50% 的概率出现。随机生成大约 30,000 个种子后,重复种子的概率为 10%。
这使得 Mt19937 不适合于重复序列不能以超过可忽略不计的概率出现的应用。如果需要可重复的播种,Random\Engine\Xoshiro256StarStar 和 Random\Engine\PcgOneseq128XslRr64 引擎都支持更大的种子,这些种子不太可能随机碰撞。如果不需要可重复性,Random\Engine\Secure 引擎提供密码学安全的随机性。
此函数目前未记录;仅提供其参数列表。
seed
用线性同余生成器生成的数值填充状态,该生成器以 seed
作为种子,该种子被解释为一个无符号的 32 位整数。
如果省略了 seed
或为 null
,将使用一个随机的无符号 32 位整数。
mode
使用以下常量之一来指定要使用的算法实现。
MT_RAND_MT19937
: 正确的 Mt19937 实现。MT_RAND_PHP
: 为了与 PHP 7.1.0 之前的 mt_srand() 向后兼容,提供了一个不正确的实现。此功能已在 PHP 8.3.0 中弃用。强烈建议不要依赖此功能。
示例 #1 Random\Engine\Mt19937::__construct() 示例
<?php
// 使用一个随机的 32 位种子。
$e = new \Random\Engine\Mt19937();
$r = new \Random\Randomizer($e);
?>