问:这个问题困扰了我好几个小时。我很喜欢这门课程,但是根据到目前为止收到的信息,我觉得这一步太大了。它是连接点,但缺少一些点。我认为将1放在第一位需要更多的注意。这就是我的想法。它可能会帮助其他人。在我看来,在Math.floor方法的内部或外部放置1的重要性值得更多关注。享受课程,感谢戴夫和树屋。
我仅使用顶部和底部结果进行演示。我将Math.random()编号分配为仅用于演示。请记住,它可以产生0到0.99999之间的任何数字。它永远不会达到1。整数表示整数。因此Math.floor()会忽略小数点后的所有内容。
EG 1:介于1到用户选择的数字之间的数字:
在此示例中,用户选择6。因此范围是1 –6。var randomNumber = Math.floor(Math.random()* topNumber)+ 1; 应用Math.floor之后添加1。它在Math.floor括号之外。0变成1,5变成6。如果Math.floor方法之外未包含1,则可能为0。图1:topNumber = 6;Math.random生成.9999(.9999 * topNumber)= 5.9994 Math.floor只需要整数。因此5.9994将变为5。
图2:topNumber = 6;Math.random产生.01(.01 * topNumber)= 0.06 Math.floor只需要整数。因此0.06将变为0。
在Math.floor方法之外放置一个可确保可达到的最低可能数字为1。这也可确保我们的最高可实现数字。
EG 2:介于0到用户选择的数字之间的数字:
在此示例中,用户选择6。var randomNumber = Math.floor(Math.random()*(topNumber + 1)); 在Math.floor括号内加1作为0是可接受的结果,它可以实现最高数。图1:topNumber = 6;Math.random生成.9999(.9999 *(topNumber + 1))= 6.9994 Math.floor只需要整数。因此6.9994将变为6。
图2:topNumber = 6;Math.random产生.01(.01 *(topNumber + 1))= 0.07 Math.floor只需要整数。因此0.07将变为0。
EG 3:用户选择的介于x和y之间的数字。
用户提供了bottomNumber和topNumber。因此,用户正在设置范围。我们的数字可以是介于10到25之间的任何数字。这就是为什么我们从TopNumber中减去bottomNumber的原因。要获得范围。然后在底部添加bottomNumber。这是可接受的最低数字。否则,我们的随机数将低于用户设置的bottomNumber。它将超出范围。因为将在Math.floor方法之后添加底部数字,所以从我们的Math.floor方法中可以接受0,因为0 + bottomNumber = bottomNumber。
var randomNumber = Math.floor(Math.random()*(topNumber-bottomNumber + 1))+ bottomNumber;
图1:topNumber = 25; bottomNumber = 10 Math.random生成.9999(.9999 *(25 – 10 +1))= 15.9984 Math.floor只需要整数。因此15.9984将变为15。然后将我们的bottomNumber添加到产生25的Math.floor方法之外。
图2:topNumber = 25;bottomNumber = 10 Math.random产生.01(.01 *(25 – 10 +1))= 0.16 Math.floor只需要整数。因此0.16将变为0。然后将我们的bottomNumber添加到产生10的Math.floor方法之外。
答:我完全同意您的看法,在进行此练习之前,对+ 1的重要性以及应该去哪里的解释还不够充分。我还感到困惑的是,挑战要求在用户选择的最高位和最低位之间产生一个随机数-因此我将其理解为“介于最高位和最低位之间的数字”。