我希望实现一个具有指定周期的简单伪随机数发生器(PRNG),并确保在该周期的持续时间内没有冲突.经过一番研究后,我发现了非常着名的LCG,这是完美的.问题是,我无法理解如何正确配置它.这是我目前的实施:
function LCG (state)
{
var a = ?;
var c = ?;
var m = ?;
return (a * state + c) % m;
}
Run Code Online (Sandbox Code Playgroud)
它表示,为了使所有种子值都有一个完整的时间段,必须满足以下条件:
1和3很容易理解和测试.然而,2,我不太明白这意味着什么或如何检查它.那么C,它可以为零吗?如果它不是零怎么办?
总的来说,我需要选择A,C和M,使得我的周期为48 ^ 5 - 1.M等于期间,我不确定A和C.