gpt4 book ai didi

javascript - JavaScript 的 Math.random 有多随机?

转载 作者:IT王子 更新时间:2023-10-29 02:40:29 24 4
gpt4 key购买 nike

6 年来我有一个 random number generator我网站上的页面。很长一段时间,它是“随机数生成器”在谷歌上的第一或第二个结果,并且已经被用来决定几十个,如果不是数百个论坛和博客上的竞赛和绘图(我知道,因为我在我的网络日志,通常去看看)。

今天,有人给我发电子邮件告诉我它可能不像我想象的那么随机。她尝试生成非常大的随机数(例如,介于 1 和 100000000000000000000 之间),发现它们几乎总是位数相同。事实上,我将该函数封装在一个循环中,这样我就可以生成数千个数字,果然,对于非常大的数字,变化只有大约 2 个数量级。

为什么?

这是循环版本,您可以自己尝试一下:

http://andrew.hedges.name/experiments/random/randomness.html

它包括取自 Mozilla Developer Network 的直接实现。以及 1997 年我从一个不再存在的网页上删除的一些代码(Paul Houle 的“Central Randomizer 1.3”)。查看源代码以了解每种方法的工作原理。

我读过 hereelsewhere关于 Mersenne Twister。 我感兴趣的是为什么 JavaScript 的内置 Math.random 函数的结果不会有更大的变化。谢谢!

最佳答案

给定 1 到 100 之间的数字。

  • 9 有 1 个数字 (1-9)
  • 90 有 2 个数字 (10-99)
  • 1 有 3 个数字 (100)

给定 1 到 1000 之间的数字。

  • 9个有1个数字
  • 90有两位数
  • 900有3个数字
  • 1有4个数字

等等。

因此,如果您随机选择一些,那么绝大多数所选数字将具有相同的位数,因为绝大多数可能的值具有相同的位数。

关于javascript - JavaScript 的 Math.random 有多随机?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1062902/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com