在JavaScript中,我们可以使用random()方法来生成0~1之间的一个随机数。random,就是“随机”的意思。特别注意一下,这里的0~1是只包含0不包含1的,也就是[0, 1)。
语法:
Math.random()
说明:
随机数在实际开发是非常有用的,随处可见。像绿叶学习网首页的飘雪效果,雪花的位置就是使用随机数来控制的,如下图所示。
下面给小伙伴们介绍一下随机数方面的使用技巧,这些技巧非常有用,要认真掌握喔。
一、随机生成某个范围内的“任意数”
(1)Math.random()*m
表示生成0~m之间的随机数,例如“Math.random()*10”表示生成0-10之间的随机数。
(2)Math.random()*m+n
表示生成n~m+n之间的随机数,例如“Math.random()*10+8”表示生成8-18之间的随机数。
(3)Math.random()*m-n
表示生成-n~m-n之间的随机数,例如“Math.random()*10-8”表示生成-8-2之间的随机数。
(4)Math.random()*m-m
表示生成-m~0之间的随机数,例如“Math.random()*10-10”表示生成-10-0之间的随机数。
二、随机数生成某个范围内的“整数”
上面介绍的都是随机生成某个范围内的任意数(包括整数和小数),但是很多时候我们需要随机生成某个范围内的整数,此时前面学到的floor()和ceil()这2个方法就能派上用场了。
对于Math.random()*5来说,由于floor()是向下取整,因此Math.floor(Math.random()*5)生成的是0~4之间的随机整数。如果你想生成0~5之间的随机整数,应该写成:
Math.floor(Math.random()*(5+1))
也就是说,如果你想生成0到m之间的随机整数,应该这样写:
Math.floor(Math.random()*(m+1))
如果你想生成1到m之间的随机整数(包括1和m),应该这样写:
Math.floor(Math.random()*m)+1
如果你想生成n到m之间的随机整数(包括n和m),应该这样写:
Math.floor(Math.random()*(m-n+1))+n
上面是用floor()来生成我们想要的随机整数,当然我们也可以使用ceil()来实现。只不过呢,我们只需要掌握2个方法中的任意一个就可以了。
怎么样?现在应该很清楚如何去生成你需要的随机数了吧?上面这些技巧是非常棒的,一定要记住。当然我们不需要去死记硬背,这些技巧稍微推理一下就可以得出来了。
最后还有一点要跟大家说一下的,网上很多有关生成随机数的公式其实都是错的,小伙伴们最好是自己动手测试一下。
当然,这些技巧暂时还用不上啦,等我们学到更高级的知识时就会知道了。
注:很多人不理解为什么Math.floor(Math.random()*5)生成的是0~4之间的整数,而不是0~5之间的整数,是因为他们没有意识到Math.random()生成随机数范围是[0,1)而不是[0,1],即不包含1。