PHP Conference Japan 2024

Random\Engine\Mt19937::__construct

(PHP 8 >= 8.2.0)

Random\Engine\Mt19937::__construct构造一个新的 Mt19937 引擎

描述

public Random\Engine\Mt19937::__construct(?int $seed = null, int $mode = MT_RAND_MT19937)

注意

由于 Mt19937(“梅森旋转器”)引擎仅接受单个 32 位整数作为种子,因此可能的随机序列数量仅限于 232(即 4,294,967,296),尽管 Mt19937 的周期非常大,为 219937-1。

当依赖于隐式或显式随机播种时,重复项会更早出现。根据生日问题,在随机生成不到 80,000 个种子后,重复的种子以 50% 的概率出现。在随机生成大约 30,000 个种子后,重复种子的概率为 10%。

这使得 Mt19937 不适合必须以不超过可忽略不计的概率避免重复序列的应用。如果需要可重复的播种,Random\Engine\Xoshiro256StarStarRandom\Engine\PcgOneseq128XslRr64 引擎都支持更大的种子,这些种子不太可能随机碰撞。如果不需要可重复性,Random\Engine\Secure 引擎提供密码学安全的随机性。

警告

此函数目前未记录;仅提供其参数列表。

参数

seed

使用线性同余生成器生成的数值填充状态,该生成器以 seed 作为 32 位无符号整数进行播种。

如果省略 seed 或为 null,则将使用随机的 32 位无符号整数。

mode

使用以下常量之一来指定要使用的算法的实现。

警告

此特性已于 PHP 8.3.0 弃用。强烈建议不要依赖此特性。

示例

示例 #1 Random\Engine\Mt19937::__construct() 示例

<?php
// 使用随机的 32 位种子。
$e = new \Random\Engine\Mt19937();

$r = new \Random\Randomizer($e);
?>
添加注释

用户贡献的注释

此页面没有用户贡献的注释。
To Top