【问题标题】:How can I randomly generate a number in the range -0.5 and 0.5?如何随机生成 -0.5 和 0.5 范围内的数字?
【发布时间】:2015-07-18 21:34:54
【问题描述】:

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

Math.random(-0.15, 0.15)

【问题讨论】:

  • 你看过MDN documentation吗?
  • OP 对 JS 来说似乎相当新。他之前可能没有听说过 MDN。

标签: javascript random


【解决方案1】:

引用 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));
}
&lt;pre id="result" /&gt;

这行得通,因为表达式

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 之间的数字。

【讨论】:

  • 谢谢大家,非常有帮助。如果我想得到一个介于 -0.35 和 0.35 之间的数字怎么办? (编辑)哦,知道了,我可以使用那个函数 :D 等等,虽然我不太明白数学... o.O!
  • @AgentZebra 我在这里包含了一个小演示和一些数学如何工作的解释,如果您有更多问题,请查看并告诉我。
  • 非常感谢 thefourtheye,非常有帮助。
【解决方案2】:

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

Math.random() - .5

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-29
    • 1970-01-01
    相关资源
    最近更新 更多