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 位元整數作為種子,儘管 Mt19937 的週期非常大,為 219937-1,但可能的隨機序列數僅限於 232(即 4,294,967,296)。

若依賴隱式或顯式隨機種子設定,重複的情況會很快出現。根據生日問題,隨機產生不到 80,000 個種子後,就有 50% 的機率會出現重複的種子。而隨機產生大約 30,000 個種子後,就有 10% 的機率會出現重複的種子。

這使得 Mt19937 不適合用於重複序列出現機率不可忽略的應用程式。如果需要可重現的種子設定,Random\Engine\Xoshiro256StarStarRandom\Engine\PcgOneseq128XslRr64 引擎都支援更大的種子,不太可能隨機碰撞。如果不需要可重現性,Random\Engine\Secure 引擎則提供密碼學安全的隨機性。

警告

此函式目前沒有文件說明;僅提供其參數列表。

參數

seed(種子)

使用以 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