(PHP 8 >= 8.2.0)
Random\Engine\Mt19937::__construct — 构造一个新的 Mt19937 引擎
由于 Mt19937(“梅森旋转器”)引擎仅接受单个 32 位整数作为种子,因此可能的随机序列数量仅限于 232(即 4,294,967,296),尽管 Mt19937 的周期非常大,为 219937-1。
当依赖于隐式或显式随机播种时,重复项会更早出现。根据生日问题,在随机生成不到 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);
?>