0

这是另一个关于有效获得准随机数的问题的延续。

我需要得到 N 个唯一的准随机数,偏差/分布质量没什么大不了的。与使用 N 次调用 rand() 或 /dev/random 等相比,我可以更高效地获得它们的 CPU/时间效率吗?也许对一些随机数或类似的东西使用一些数学/按位操作。或使用预先计算的表或...

N 可以很大,例如 10000 或 1000000。

谢谢。

4

1 回答 1

0

我在这里发现了类似的东西:

m_w = <choose-initializer>;    /* must not be zero */
m_z = <choose-initializer>;    /* must not be zero */

uint get_random()
{
    m_z = 36969 * (m_z & 65535) + (m_z >> 16);
    m_w = 18000 * (m_w & 65535) + (m_w >> 16);
    return (m_z << 16) + m_w;  /* 32-bit result */
}
于 2012-04-08T18:19:30.067 回答