6年来,我的网站上有一个 随机数发生器随机数发生器页面。很长一段时间以来,这是谷歌上第一个或第二个关于“随机数生成器”的搜索结果,并且已经被用来在论坛和博客上决定几十个甚至几百个比赛和图画(我知道这些是因为我在我的网络日志中看到了引用者,并且通常会去看一看)。
今天,有人给我发邮件告诉我 也许不像我想的那么随机。。她尝试生成非常大的随机数(例如,在1到1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000。实际上,我将函数封装在一个循环中,这样就可以生成数千个数字,而且对于非常大的数字,确实可以生成 变化只有两个数量级。
为什么?
Here is the looping version, so you can try it out for yourself:
Http://andrew.hedges.name/experiments/random/randomness.html
它包括一个简单的实现,从 Mozilla Developer Network和一些代码,从1997年,我从一个不再存在的网页(保罗豪尔的“中央随机化1.3”)。查看源代码以查看每个方法的工作原理。
I've read 给你 and 其他地方 about 梅森旋转算法 What I'm interested in is why there wouldn't be greater variation in the results from JavaScript's built-in Math.random function. Thanks!