相关疑难解决方法(0)

理解"随机性"

我无法理解这一点,这更随机?

rand()
Run Code Online (Sandbox Code Playgroud)

要么

rand() * rand()
Run Code Online (Sandbox Code Playgroud)

我发现它是一个真正的脑筋急转弯,你能帮助我吗?

编辑:

直观地,我知道数学答案将是它们同样随机,但我不禁想到,如果你将两者相乘的话"运行随机数算法"两次,你会创造一些比随机更随机的东西它一次.

language-agnostic random math

829
推荐指数
18
解决办法
10万
查看次数

JavaScript的Math.random是多么随机?

6年来,我的网站上有一个随机数生成器页面.很长一段时间,它是Google上"随机数生成器"的第一个或第二个结果,并且已被用于在论坛和博客上决定数十个(如果不是数百个)竞赛和绘图(我知道因为我看到了我的推荐人)网络日志,通常去看看).

今天,有人通过电子邮件告诉我,它可能不像我想的那么随机.她尝试生成非常大的随机数(例如,介于1和10000000000000000000之间),发现它们几乎总是相同的位数.实际上,我将函数包装在一个循环中,因此我可以生成数千个数字,当然,对于非常大的数字,变化只有大约2个数量级.

为什么?

这是循环版本,所以你可以自己试试:

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

它既包括Mozilla开发者网络的直接实现,也包括1997年我从不再存在的网页中删除的一些代码(Paul Houle的"Central Randomizer 1.3").查看源以查看每种方法的工作原理.

我在这里其他地方读过有关Mersenne Twister的文章.我感兴趣的是为什么JavaScript的内置Math.random函数的结果没有更大的变化.谢谢!

javascript random

111
推荐指数
7
解决办法
6万
查看次数

为什么谷歌Chrome的Math.random数字生成器不*随机?

当我在各种浏览器中运行一些单元测试时,我今天遇到了一个奇怪的"bug".我在今天之前已经多次在Firefox中运行测试,甚至IE,但显然还不是Chrome(v19-dev).当我在Chrome中运行它时,它始终无法通过一次测试,因为我计算的两个值不匹配.

当我真正挖掘正在发生的事情时,我意识到问题是我假设如果我填充一个具有100,000个Math.random()值的数组,它们都将是唯一的(不会有任何冲突).事实证明,在Chrome中并非如此.

在Chrome中,我始终获得至少对与100,000匹配的值.Firefox和IE9从未发生过冲突.这是我写的一个jsfiddle,用于测试它Math.random()在数组中创建1M 条目:http://jsfiddle.net/pseudosavant/bcduj/

有谁知道这是为什么用于Chrome的伪随机数生成器Math.random是真的不在于随机的?看起来这可能会对任何曾经使用的客户端js加密例程产生影响Math.random.

javascript random google-chrome

14
推荐指数
1
解决办法
8035
查看次数

Math.random使用什么算法?

自从我学习计算机科学以来,每当随机数字出现时,它总是Mersenne Twister.甚至从来没有一个问题,没有其他选择.只是,使用Mersenne Twister.

那么JavaScript的Math.random使用了什么?似乎它应该使用Mersenne Twister,因为它显然没有同行,但我找不到任何关于它是否有效的参考.

有没有人知道它依赖什么,和/或为什么它不是MT,如果是这样的话?

javascript random mersenne-twister

4
推荐指数
1
解决办法
2197
查看次数