简而言之 - 这个随机数生成器是使用线性同余发生器实现的。参数 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 期刊数学
软件,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.