代码说明:处理最小和最大 - Javascript

时间:2016-09-28 17:20:19

标签: javascript

function randomRange(myMin, myMax) {

return Math.floor(Math.random() * (myMax - myMin + 1)) +myMin;

}

我需要回顾一下return语句的作用。据我所知,它创建了一个范围,例如5 - 15.但我不知道为什么我从min中减去max并添加+ 1然后+ myMin。

3 个答案:

答案 0 :(得分:1)

Math.random返回0到1之间的浮点数。例如,如果取1到10范围。然后Math.random将返回最小值0和最大值1然后乘以10-1 = 9。你得到0到9.但是当你加上最小值时,它会增加到1到10。

答案 1 :(得分:1)

  

但我不知道为什么我从min减去最大值并加上+ 1然后+ myMin。

首先请记住,Math.random()会返回[0, 1)范围内的值。

让我们从最后开始:

    完成
  • + myMin以确保结果大于或等于myMin。 假设Math.random()返回0。然后Math.floor(...)返回0。如果我们没有+ myMin,则返回结果将是0而不是myMin

  • 完成
  • + 1以获取包含 myMax的随机值。请注意,Math.random()永远不会返回1,只会返回1附近的值。即除非我们添加Math.floor(Math.random() * myMax),否则myMax永远不会是1

  • myMax - myMin已完成,因为我们正在执行+ myMin。我们必须考虑将结果增加myMin

    假设Math.random()返回0.5,我们的范围为100 - 120。没有- myMin,我们会得到

     Math.floor(0.5 * 120) + 100 = 60 + 100 = 160
    

    这明显大于120。如果我们加入- myMin

     Math.floor(0.5 * (120 - 100)) + 100 = (0.5 * 20) + 100 = 110
    

    我们得到的110恰好在我们的范围中间(这是直观的,因为我们将0.5作为随机值)。

答案 2 :(得分:1)

更正 - 它没有创建范围,它在给定的数字范围(最小和最大数字)之间生成一个随机整数。

E.g。 (5,15)=(min,max)

将导致数字介于此范围之间。

代码说明:

Math.floor(Math.random() * (myMax - myMin + 1)) +myMin;

假设max和min都是= 15

所以上面的内容如下:

Math.floor(Math.random()*(15 - 15 + 1))+ 15;

其等于= 15,因为0< = Math.random()*(1)< 1所以这个楼层是0.

如果你没有添加1,那么这个角落无效。

添加最小值以确保值保持在最小值和最大值之间

相关问题