这是另一个关于有效获得准随机数的问题的延续。
我需要得到 N 个唯一的准随机数,偏差/分布质量没什么大不了的。与使用 N 次调用 rand() 或 /dev/random 等相比,我可以更高效地获得它们的 CPU/时间效率吗?也许对一些随机数或类似的东西使用一些数学/按位操作。或使用预先计算的表或...
N 可以很大,例如 10000 或 1000000。
谢谢。
我在这里发现了类似的东西:
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 */
}