Math.random() === Math.random() 是否有可能

Gil*_*man 4 javascript random

在 JavaScript 中,这个表达式会在任何浏览器中计算为 true 吗?为什么或者为什么不?

  Math.random() === Math.random()
Run Code Online (Sandbox Code Playgroud)

注意:请按字面意思理解上面的代码。我不是在问 Math.random 是否会生成重复值。

注意2:没有猴子补丁

这个问题是关于 Math.random() 的内部实现,而不是关于随机数的性质。

Ber*_*rgi 5

该表达式Math.random() === Math.random()在任何浏览器中都会评估为 true 吗?

是的,而且很可能已经发生了。

这个问题是关于内部实现的 Math.random()

嗯,没有一个单一的实现,每个 javascript 引擎都实现了自己的一个。它的随机性 是不可信的,但普通引擎确实/确实使用了 31、32、48 或 52 位的熵。
这意味着从连续两次调用(或从任何两次调用中)获得相同值的概率是 2 -31、 2 -32等。这听起来并不多,但 2 31只是互联网用户的数量…

哦,当然总是有这样的错误......