PRNG背后的理论是什么?

Vad*_*dim 4 c++ theory random

__forceinline static int Random()
{
    int x = 214013, y = 2531011;
    seed = (x * seed + y);
    return ((seed >> 16) & 0x7FFF) - 0x3FFF; 
}
Run Code Online (Sandbox Code Playgroud)

上面的代码返回PRNG,具有良好的均匀分布.

现在将x更改为x + 1 - 结果序列不能再被称为PRNG.

那么(这个)PRNG背后的理论是什么?"x和y是经过精心挑选的",但它们是如何被选中的?

MSa*_*ers 6

这看起来像一个线性同余生成器.当乘数x可以被模数减去1的所有素因子整除时,LCG更好(0x3FFFFFFFF在这里,由于return语句中的数学,它有点隐藏).