Xorshift随机数生成器:简单、快速的随机性测试

1 下载量 51 浏览量 更新于2024-08-25 收藏 51KB PDF 举报
"这篇文档是关于Xorshift随机数生成器(Xorshift RNGs)的,由George Marsaglia在2003年提出。这种随机数生成器设计简单,速度极快,具有2^k-1的周期,其中k可以是32, 64, 96, 128, 160, 192等。据文中所述,这些RNGs在随机性测试中表现出色。" Xorshift随机数生成器是一种在计算机科学中广泛使用的伪随机数生成技术,尤其适用于需要高性能随机数的场景。这种生成器的基本原理是通过对一个数值进行异或(XOR)和移位操作来产生新的随机数。在C语言中,这种操作可以表示为 `y = y << a`(左移)或者 `y = y >> a`(右移)。在Fortran中,可以使用单个形式 `ieor(y, ishft(y, a))` 来实现,其中负的a代表右移,非负的a代表左移。 在Marsaglia的文章中,他强调了通过组合不同移位量和参数的异或移位操作,可以构建出既快速又简单的随机数生成器,并且这些生成器在一系列的随机性检验中表现良好。例如,一个简单的C程序,仅使用三次异或移位操作,就能产生2^128-1个32位的随机整数。 Xorshift RNGs的高效性和简洁性使其在许多领域都有应用,包括模拟、加密、游戏开发和统计计算等。它们的周期足够长,可以满足大多数应用需求,而且由于它们的构造简单,执行速度快,所以在需要大量随机数的实时系统中特别受欢迎。然而,尽管它们在随机性测试中表现出色,但并不意味着它们在所有情况下都完美无缺。对于安全要求极高的应用,如密码学,可能还需要更复杂的随机数生成算法来确保安全性。 Xorshift RNGs是计算机科学中的一个重要工具,提供了快速生成伪随机数的能力,同时在效率和随机性之间找到了良好的平衡。理解其工作原理对于优化性能、设计高效的随机数生成系统以及理解现代计算中的随机性概念至关重要。