六年来,我在网站上拥有一个随机数生成器页面。长期以来,它是Google在“随机数生成器”上的第一个或第二个结果,已被用于决定数十个(甚至数百个)讨论论坛和博客上的竞赛和绘图(我知道,因为我在我的网站上看到了引荐来源网络日志,通常可以去看看)。
今天,有人给我发电子邮件告诉我,这可能不像我想的那么随意。她尝试生成非常大的随机数(例如1到10000000000000000000之间),发现它们几乎总是相同的数字。的确,我将函数包装在一个循环中,这样我可以生成数千个数字,并且可以肯定的是,对于非常大的数字,变化仅约为2个数量级。
为什么?
这是循环版本,因此您可以自己尝试一下:
http://andrew.hedges.name/experiments/random/randomness.html
它既包含来自Mozilla开发人员网络的直接实现,也包含1997年的一些代码,这些代码我从一个不存在的网页上擦掉(Paul Houle的“中央随机化器1.3”)。查看源代码以了解每种方法的工作原理。
我读过这里和其他地方的约赛特旋转。我感兴趣的是,为什么JavaScript的内置Math.random函数的结果不会有更大的变化。谢谢!