5 个版本
0.9.4 | 2024年8月10日 |
---|---|
0.9.3 | 2024年8月4日 |
0.9.2 | 2024年8月3日 |
0.9.1 | 2024年8月3日 |
0.9.0 | 2024年8月3日 |
#1519 在 算法
每月下载量334
14KB
195 行
RANDU
RANDU 是伪随机乘法 线性同余生成器 (MCG)。这个生成器最早在20世纪60年代初提出,很快在20世纪60年代和70年代得到广泛应用。它是IBM Scientific Subroutine Library for IBM System/360 的一部分。
RANDU 使用 MCG 系数 乘数 a = 65539 (2^16 + 3) 和 模数 m = 2^31,以及 常数 c = 0。它可以在32位硬件上非常快速地实现,只需要两个操作:将乘数乘以 a,然后用 AND 操作和 0x7fffffff 对结果进行位掩码。
生成的值是正31位整数。生成器的周期为 2^29。低位的随机性较低,不应单独使用。所有基于2的模数的同余生成器都存在低位随机性低和未实现完整周期的问题。
RANDU 在维数大于2时未能通过谱测试。RANDU 在3维空间中产生非常 强的带状效应,所有点都落在15个二维平面上。这种效果可以用于GPU编程中的视觉效果,并利用计算上的简化。
参考文献
https://en.wikipedia.org/wiki/RANDU
https://en.wikipedia.org/wiki/Linear_congruential_generator
谱
2维 | 3维 | 4维 | 5维 | 6维 | 7维 | 8维 |
---|---|---|---|---|---|---|
0.93 | 0.012 | 0.059 | 0.16 | 0.29 | 0.45 | 0.62 |
值 0.75 和以上通常被认为是通过了谱测试。虽然这个生成器在高维未能通过测试,但在生成2维数据时它非常 强。
许可证
这是一款免费且不受限制的软件,已发布到公共领域。