引用 Math.random 上的 MDN,
Math.random() 函数返回 [0, 1) 范围内的浮点伪随机数,即从 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)
它将乘以max 和min 值之间的差值。在您的情况下,假设max 是0.35 和min 是-0.35。所以,max - min 变成了0.7。所以,Math.random() * (max - min) 给出了一个在0 和0.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,它就变成了0 和0.35 之间的某个数字。如果(Math.random() * 0.7) 生成的值小于0.35,由于你从中减去0.35,它就变成了-0.35 和0 之间的数字。