伪随机数生成器:线性同余生成器与梅森旋转算法
在伪随机数生成领域,线性同余生成器(LCG)和梅森旋转算法(Mersenne Twister,MT)是两种重要的算法。下面将详细介绍它们的特点、使用方法以及性能比较。
线性同余生成器的使用与注意事项
在进行2000000次模拟后,初始猜测获胜的次数为666624次(占比33.3312%),改变猜测后获胜的次数为1333376次(占比66.6688%),这符合我们的预期。但这并不意味着线性同余生成器毫无用处,只是在使用时需要格外小心。
例如,当我们想要随机字节值时,如果直接使用randvax函数的输出并对其取模256,只会保留最低位,这样的做法可能会让我们失望。正确使用这些生成器的方法是:
1. 将输出的整数值通过浮点除法除以m,得到一个范围在[0, 1)的浮点值。
2. 将这个浮点值乘以我们期望的最大值y,得到的结果范围为[0, y)。
3. 对这个结果使用floor或ceiling函数,得到一个整数,同时保留生成器的随机性。
在使用线性同余生成器时,我们不仅要了解其工作原理,还要学会如何选择合适的参数值。同时,要意识到即使是好的生成器,其周期也是有限的,使用时需谨慎。
梅森旋转算法(MT)简介
梅森旋转算法(MT)目前是伪随机数生成器的事实标准,至少在不需要加密安全生成器的任务中是如此。它于1997年由松本真和西村拓士提出,之后作者对其初始化程序进行了改进,以修正当初始化中有很多零时初始输出不太随机的问题。
MT是第一个能够快速生成高质量、均匀分布的32位伪随机数的生成器,并且在众多编程环境和操作系统中得到了实现。下面从
超级会员免费看
订阅专栏 解锁全文
6540

被折叠的 条评论
为什么被折叠?



