是时候抛弃梅森旋转算法了
数据结构与算法
2025-06-23 v3 密码学与安全
摘要
当梅森旋转算法 (Mersenne Twister) 于 1997 年首次出现时,它是如何利用 上的线性映射生成伪随机数的有力例证。特别是,定义具有长周期的生成器之简便性使梅森旋转算法获得了大量追随者,尽管事实上如此长的周期并非质量的度量,且它们需要大量内存。即便在其发表之时,梅森旋转算法的若干缺陷便可被预见,但它们在一定程度上被其他有趣性质所掩盖。如今梅森旋转算法是 C 编译器、Python 语言、Maple 数学计算系统以及许多其他环境中的默认生成器。然而,过去 年积累的知识表明,梅森旋转算法实际上存在严重缺陷,绝不应作为通用伪随机数生成器使用。这些结果许多为坊间共识,或散见于高度专门的文献中。本文为非专业人士综述这些结果,提供新颖、简单、易懂的示例,旨在作为最终用户或语言实现者的指南,使其能就是否使用梅森旋转算法做出明智决定。
引用
@article{arxiv.1910.06437,
title = {It is high time we let go of the Mersenne Twister},
author = {Sebastiano Vigna},
journal= {arXiv preprint arXiv:1910.06437},
year = {2025}
}