3个版本
0.9.2 | 2024年8月10日 |
---|---|
0.9.1 | 2024年8月4日 |
0.9.0 | 2024年8月3日 |
453 在 算法 中
每月363次下载
17KB
183 行
LCG69069
LCG69069是伪随机线性同余生成器 (LCG),使用乘数参数69069。
此参数由George Marsaglia提出,作为“所有乘数中的最佳候选”。
我提名69069 = 3 * 7 * 11 * 13 * 23。这个回文卷积乘数易于记忆,并且对于模数2^32、2^35、2^36有近乎立方的晶格。
LCG69069使用的系数:乘数a = 69096,增量c = 1和模数m = 2^32。
它可以在32位硬件上非常快速地实现,只需要2个操作:通过a的环绕乘法和通过c的环绕加法。通过使用32位寄存器,值自动截断到正确的范围;不需要模运算。
生成的值是完整的32位无符号整数范围,周期为2^32。
MTH$RANDOM
LCG69069被用于VAX VMS Math库中的函数MTH$RANDOM,通常称为VAX RANDOM。它也是组合生成器SUPER-DUPER的一部分。
MCG69069
乘法同余伪随机数生成器。它是LCG的特殊情况,系数c为零。在32位硬件上,此生成器通过单环绕乘法操作实现。此变体适用于在GPU上生成随机噪声,见下方的光谱测试。
生成的值是完整的32位无符号整数范围,周期为2^30。这是2^N模数的MCG生成器的限制,它们有LCG的/4周期。LCG生成器始终优于相应的MCG变体。
参考资料
https://en.wikipedia.org/wiki/Linear_congruential_generator
LCG69069 / VAX MTH$RANDOM
MCG69069
MCG光谱测试
模数 | 2d | 3d | 4d | 5d | 6d | 7d | 8d |
---|---|---|---|---|---|---|---|
2^32 | 0.4625 | 0.3131 | 0.4572 | 0.5529 | 0.3767 | 0.4967 | 0.6852 |
2^35 | 0.6935 | 0.8595 | 0.6347 | 0.7000 | 0.2664 | 0.3690 | 0.5284 |
2^36 | 0.4904 | 0.6822 | 0.7760 | 0.6094 | 0.4746 | 0.3342 | 0.4845 |
LCG版本产生更好的光谱测试结果。
许可证
这是一款免费且不受限制的软件,已释放到公共领域。