Math.floor(Math.random() * 5 + 1) 的操作顺序?
Order of operations for Math.floor(Math.random() * 5 + 1)?
在Code Academy JS课程中,屠龙2/6,提示中使用了以下文本来描述我在标题中包含的代码的操作顺序。
How does this code work?
Math.floor(Math.random() * 5 + 1);
First we use Math.random() to create a random number from 0 up to 1. For example, 0.5
Then we multiply by 5 to make the random number from 0 up to 5. For >example, 0.5 * 5 = 2.5
Next we use Math.floor() to round down to a whole number. For example, >Math.floor( 2.5 ) = 2
Finally we add 1 to change the range from between 0 and 4 to between 1 and >5 (up to and including 5)
我在几个不同的地方 (here and here) 查过这个,其中大部分要么关注 Math.random() 产生的范围(我理解),要么确认提示中概述的操作顺序,其中 "Math.floor" 在添加“+1”之前作用于 "Math.random()*5"。
不过我觉得,按照我在学校学的操作顺序,最后两步应该是翻转过来的。因为 "Math.random()*5" 和“+ 1”都在括号内,所以情况不是这样吗?
虽然这两者之间的差异可能不会对该特定代码返回的值产生影响,但我可以看到操作顺序的根本变化,就像这里概述的那样,这会让我在以后的道路上感到有些沮丧如果我不知道的话。
Math.floor() 将在计算后对括号内的任何内容起作用。
Math.floor(Math.random() * 5 + 1)
与
相同
var i = Math.random() * 5;
i += 1;
Math.floor(i);
你是对的,页面上的措辞是错误的。最后会发生的事情是 floor
调用。括号中的所有内容将首先处理。
老实说,我认为他们在这里混淆了,你是对的。根据 PEMDAS 和我学过的任何数学,+1 出现在 Math.floor 函数之前。
Math.random() 函数 return 是 [0, 1) 范围内的随机数,即从 0(含)到但不包括 1(不含)。它可以是任何东西,例如 0、.34、.42 等。
如果你想要 0-5 之间的随机数。
您将使用 Math.Random()*5。这会给你任何数字,比如 0,4.43.4.34 但不是 5。
然后我们像这样加 1 Math.random() * 5 + 1。现在你很可能会得到一个介于 0 和 6 之间的数字。但你不希望数字超过 5。所以
您应用 floor 方法,该方法将 return 小于或等于给定数字的最大整数。
在Code Academy JS课程中,屠龙2/6,提示中使用了以下文本来描述我在标题中包含的代码的操作顺序。
How does this code work?
Math.floor(Math.random() * 5 + 1);
First we use Math.random() to create a random number from 0 up to 1. For example, 0.5
Then we multiply by 5 to make the random number from 0 up to 5. For >example, 0.5 * 5 = 2.5
Next we use Math.floor() to round down to a whole number. For example, >Math.floor( 2.5 ) = 2
Finally we add 1 to change the range from between 0 and 4 to between 1 and >5 (up to and including 5)
我在几个不同的地方 (here and here) 查过这个,其中大部分要么关注 Math.random() 产生的范围(我理解),要么确认提示中概述的操作顺序,其中 "Math.floor" 在添加“+1”之前作用于 "Math.random()*5"。
不过我觉得,按照我在学校学的操作顺序,最后两步应该是翻转过来的。因为 "Math.random()*5" 和“+ 1”都在括号内,所以情况不是这样吗?
虽然这两者之间的差异可能不会对该特定代码返回的值产生影响,但我可以看到操作顺序的根本变化,就像这里概述的那样,这会让我在以后的道路上感到有些沮丧如果我不知道的话。
Math.floor() 将在计算后对括号内的任何内容起作用。
Math.floor(Math.random() * 5 + 1)
与
相同var i = Math.random() * 5;
i += 1;
Math.floor(i);
你是对的,页面上的措辞是错误的。最后会发生的事情是 floor
调用。括号中的所有内容将首先处理。
老实说,我认为他们在这里混淆了,你是对的。根据 PEMDAS 和我学过的任何数学,+1 出现在 Math.floor 函数之前。
Math.random() 函数 return 是 [0, 1) 范围内的随机数,即从 0(含)到但不包括 1(不含)。它可以是任何东西,例如 0、.34、.42 等。 如果你想要 0-5 之间的随机数。 您将使用 Math.Random()*5。这会给你任何数字,比如 0,4.43.4.34 但不是 5。 然后我们像这样加 1 Math.random() * 5 + 1。现在你很可能会得到一个介于 0 和 6 之间的数字。但你不希望数字超过 5。所以 您应用 floor 方法,该方法将 return 小于或等于给定数字的最大整数。