Javascript Math.random()是否完全相等

Javascript Math.random()是否完全相等,javascript,Javascript,这不是第一次问“can Math.random()equal”这个问题 -更高层次的解释 -较低层次的解释 所以,;我的问题是:JavaScript的Math.random()是否可以完全相等 它符合=0&

这不是第一次问“can Math.random()equal”这个问题

-更高层次的解释

-较低层次的解释

所以,;我的问题是:JavaScript的Math.random()是否可以完全相等

它符合
=0&<1
的定义。但在实践中,我尝试了几种不同的方法,最后一种是:

while (Math.random() != .5)
它们要么超时,要么永远不会完全相等


几十亿次尝试/几次浏览器(firefox 60+X64)随后崩溃。可能吗?是否依赖于浏览器/系统?是我对统计概率缺乏理解吗?

好问题!我不是一个统计学家,所以有经验的人可以随意加入并纠正我

尽管如此,据我所知,你的问题的答案是:

所以,;我的问题是:JavaScript的Math.random()能精确地等于.5吗

!这个答案让我有些惊讶,因为它有点违反直觉;但我觉得这是一个很好的解释。答案为“否”的原因是您被限制在范围(0,1)(独占)内。这是一个连续的分布。所以你的问题本质上是问:

从连续分布中选择特定值的概率是多少


答案是0。从连续分布(根据定义)取样时,有无限多的可能性。因此,获得指定值的概率为:1/无穷大,渐近接近零

当然,这是可能的,只是难以置信的不可能。就对话而言,这有多难以置信的不可能?假设算法是公平的,就像一个调用不可能精确到0。似乎有一个。类似地:。范围是[0,1],并且有有限多个IEEE-754双精度数字(JS正在使用).此外,在连续范围内,概率0并不意味着不可能,因此答案为“否”绝对是错误的。感谢你的休息。不确定反对票,这个问题是公开讨论。但我不同意你的观点,因为泽诺悖论。无穷大不是一个数字,它是一个概念。因此1/无穷大也只是一个概念。它不适用于现实世界的数学。@Xufox很好。我在两个方面都错了。OP确实指定了作为一种编程语言,答案应该是肯定的。这是可能的,但不太可能。您看到的是有符号浮点64位IEEE 754的概率为1/(2^{1023}),而精度没有损失(我相信)@poorlywritencode OP确实指定了一种编程语言。我是从数学的角度而不是CS的角度来研究它的。在IEEE 754中,有有限数量的唯一数字。这完全改变了答案。鉴于无穷大在计算领域的重要性,我不确定我们是否可以说它不适用于真实数学可行性。我认为无穷大对计算机理论也有着重要的影响。同时注意到,数学中有完整的子集用来区分不同类型的无穷大。