Mersenne Twister被广泛认为是很好的。哎呀,CPython消息人士说,它“是现有的经过最广泛测试的生成器之一”。但是,这是什么意思?当被要求列出该生成器的属性时,我所能提供的大多数内容都是不好的:
- 它是庞大而僵化的(例如,无搜索或多个流),
- 尽管状态规模庞大,但它未能通过标准的统计测试,
- 它在0左右有严重问题,表明它对自己的随机性很差,
- 不太快
等等。与诸如XorShift *的简单RNG相比,它也无可避免地变得复杂。
因此,我寻找一些信息,以了解为什么有人认为这很好。原始论文对“超天文学”时期和623维均匀分布发表了很多评论,他说
在许多已知的测量方法中,基于较高尺寸均匀性的测试(如下面所述的光谱测试(参见Knuth [1981])和k分布测试)被认为是最强的。
但是,对于此属性,发电机会被足够长的计数器打败!这没有评论本地分布,这是您实际上在生成器中关心的(尽管“本地”可能意味着各种事情)。甚至CSPRNG都不在意这么长时间,因为这并不重要。
论文中有很多数学,但据我所知,这实际上与随机性无关。几乎所有对此的提及都会迅速跳回这些原始的,基本上无用的主张。
似乎人们以牺牲较旧,更可靠的技术为代价而跳上了潮流。例如,如果您将LCG中的单词数增加到3(比Mersenne Twister的“仅624”少得多)并在每次通过时输出最高单词,则它会通过BigCrush(TestU01测试套件的更难部分)),尽管Twister失败了(PCG纸,图2)。鉴于此,以及证据不足,我能够在支持梅森倍捻机的发现,是什么做的原因关注过其他的选择青睐呢?
这也不是纯粹的历史。有人告诉我,Mersenne Twister在实践中至少比PCG random更为有效。但是用例是否如此清晰,以至于它们可以比我们的测试组合做得更好?一些谷歌搜索暗示他们可能不是。
简而言之,我想知道Mersenne Twister在其历史背景或其他方面如何获得广泛的正面声誉。一方面,我显然对它的质量表示怀疑,但另一方面,很难想象它是完全随机发生的。