如何随机生成-​​0.5和0.5范围内的数字?

时间:2015-05-08 04:38:16

标签: javascript random

在javascript中如何随机生成介于-0.5和0.5之间的数字?以下似乎只给出正数,而没有负数。

Math.random(-0.15, 0.15)

2 个答案:

答案 0 :(得分:9)

Math.random

上引用MDN
  

Math.random()函数返回[0,1]范围内的浮点伪随机数,从0(含)到0但不包括1(不包括)

因此,生成0到1之间的随机数,并从中减去0.5。

Math.random() - 0.5

注意: Math.random()不期望任何参数。因此,您无法指定任何范围。

如果要在范围之间生成随机数,请使用MDN中的example snippets

// Returns a random number between min (inclusive) and max (exclusive)
function getRandomArbitrary(min, max) {
  return Math.random() * (max - min) + min;
}

带范围的演示

function getRandomArbitrary(min, max) {
  return Math.random() * (max - min) + min;
}


function appendToResult(value) {
  document.getElementById("result").innerHTML += value + "<br />";
}

document.getElementById("result").innerHTML = "";

for (var i = 0; i < 10; i += 1) {
  appendToResult(getRandomArbitrary(-0.35, 0.35));
}
<pre id="result" />

这是因为,表达式

Math.random() * (max - min) + min

将按以下方式评估。首先,

Math.random()
将评估

以获得0和1范围内的随机数,然后

Math.random() * (max - min)

它将乘以maxmin值之间的差值。在您的情况下,我们可以说max0.35min-0.35。因此,max - min变为0.7。因此,Math.random() * (max - min)会在00.7范围内给出一个数字(因为即使Math.random()生成1,当您将其与0.7相乘时也是如此,结果将变为0.7)。然后,你做

Math.random() * (max - min) + min

所以,对于你的情况,基本上就是,

Math.random() * (0.35 - (-0.35)) + (-0.35)
(Math.random() * 0.7) - 0.35

因此,如果(Math.random() * 0.7)生成的任何值大于0.35,则由于您从中减去0.35,因此它会变为00.35之间的某个数字。如果(Math.random() * 0.7)生成的值小于0.35,则由于您从中减去0.35,因此它会变为-0.350之间的数字。

答案 1 :(得分:3)

您可以使用Math.random()获取0到1之间的数字,然后减少.5以设置下限和上限

Math.random() - .5