tl;dr - 此亂數產生器是使用線性同餘產生器實作的。引數 iseed1 和 iseed2 各自期望一個 32 位元整數。
我真不敢相信這個 PECL 套件的文件如此糟糕,以至於我必須深入研究 C 原始碼才能弄清楚如何使用它。
PECL 原始碼中的文件,"com.c" 的第 246-262 行,位於
http://git.php.net/?p=pecl/math/stats.git;a=blob;f=com.c;h=7740ac636969e500254c61697125dfa8857dd715;hb=refs/heads/master
/*
**********************************************************************
void setall(long iseed1,long iseed2)
設定所有亂數產生器
將產生器 1 的初始種子設定為 ISEED1 和 ISEED2。其他
產生器的初始種子也會相應設定,且
所有產生器的狀態都會設定為這些種子。
這是從 Pascal 到 Fortran 的例行程序轉錄
來自論文的 Set_Initial_Seed
L'Ecuyer, P. 和 Cote, S. "Implementing a Random Number Package
with Splitting Facilities." ACM Transactions on Mathematical
Software, 17:98-111 (1991)
引數
iseed1 -> 兩個整數種子的第一個
iseed2 -> 兩個整數種子的第二個
**********************************************************************
*/
進一步查看參考的論文,我們看到
PROCEDURE Set_lnitiaI_Seed (S1, S2 INTEGER);
將產生器 1 的初始種子重設為值 S1 和 S2,其必須滿足:1 <= S1 <= 2147483562 且 1 <= S2 <= 2147483398。所有其他產生器的初始種子會相應地重新計算,且所有產生器的狀態都會重設為這些初始種子。此程序會在程式執行開始時自動呼叫,使用 (預設) 參數值 S1 = 1234567890 和 S2 = 123456789。