【发布时间】:2015-11-03 16:39:26
【问题描述】:
有没有可能:
Math.floor(Math.random()*6+1);
能出来7个吗?更具体地说,可以:
Math.random()
以 1 的形式出现?
【问题讨论】:
-
文档说不。 “...返回 [0, 1) 范围内的浮点伪随机数,即从 0(包括)到但不包括 1(不包括)”developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…。
-
由于浮点值的精度有限,存在边缘情况。如果
Math.random()返回0.9999999999999999,则0.9999999999999999 * 8 + 1给出9(但0.9999999999999999 * 6 + 1仍然给出6.999999999999999)。在您的控制台中尝试。不过,我不得不说我曾经见过这种情况发生在“野外”。 -
@FrédéricHamidi,因此使用 与双精度 64 位二进制格式 IEEE 754 值相对应的原始值进行计算会产生问题,而不是
Math.random()本身。 -
@Nina,当然,我只是在解决问题的第一部分。我试图计算
random()返回0.9999999999999999的几率,但现在我的头很痛,而且在我们的有生之年可能永远不会发生:)
标签: javascript