(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
作為種子的線性同餘產生器產生的值填充狀態,其中 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);
?>