很早以前在简书写过几篇关于随机数的文章以前写的很乱,如今从新整理一下这些知识点。本文包含了以下这些知识点:js生成随机数,生成指定范围的随机数,得到不重复随机数组。javascript
一般咱们生成随机数都是使用这个方法,这个方法返回值是一个伪随机选择的数,该值大于等于0.0且小于1.0,即取值范围是[0.0,1.0)的左闭右开区间,在该范围内(近似)均匀分布。html
下面有张动态图栗子,能够看一下。java
Math.floor(x)——使后面括号内的x(任意数值或表达式),生成一个小于等于 x,且与 x 最接近的整数。git
Math.floor(x),能够简单理解为下舍入。这里有几个栗子帮助理解,//后面是输出的内容:github
document.write(Math.floor(0.60) + "<br />")//0
document.write(Math.floor(0.40) + "<br />")//0
document.write(Math.floor(5) + "<br />")//5
document.write(Math.floor(5.1) + "<br />")//5
document.write(Math.floor(-5.1) + "<br />")//-6
document.write(Math.floor(-5.9))//-6复制代码
1.经过Math.random()生成0-1之间的随机数
2.而后乘以20,就是取从0~20间的随机数,注意这里并非整数。这里的范围能够改变,只要改后面那个数字为50,、8,就能够变成0~50,0~80之间的随机数。
3.Math.floor(),使括号里面的(Math.random()乘以20)这个表达式,下舍入,生成为一个整数。 数组
文末有demo连接,能够把代码复制回去,本身试试dom
这里是从任意值开始,咱们刚才取的随机数都是从0开始。可是有些场景可能须要咱们取一个指定范围的随机数,好比20-30,80-120等等。函数
ps: max - 范围内的最大值,min - 单位内的最小值学习
按照这个公式来,就没错了,下面是demo栗子。ui
若是是负数范围的随机数,要进行符号转换的,好比--30(这里是说减去三十。),转换符号后变成+。不转换符号,会出现报错!
Math.floor(Math.random()*(-10--30+1)+-30)//错误
Math.floor(Math.random()*(-10+30+1)-30);//正确。复制代码
得到不重复随机数组的方法很是多,这里就介绍一种:使用indexOf()的方法来去重,而后经过push()方法来添加数组。
push() 方法可向数组的末尾添加一个或多个元素,并返回新的长度。
看完了仍是一脸懵逼,到底跟随机数组去重有什么关系??
这里有一句特别关键:
依靠这句注释,经过if条件判断,咱们就能够作出随机数组去重的功能。
代码:
//num是一个数组,randomNum是一个随机数值。
while (num.length<3){//num.length表明数组的长度,当数组的长度再也不知足小于3,跳出循环
var randomNum=Math.floor(Math.random()*9);//得到在0-9之间的随机数
if (num.indexOf(randomNum)<0){
//判断randomNum以前有没有在数组里面,若是没有,就添加进去,若是有,从新循环。
num.push(randomNum);
// 将randomNum这个随机数,添加到num这个数组里面。
}
console.log(num);
}复制代码
1.先限定数组的长度,不然就成死循环了。
2.得到一个随机数
3.判断是否已经在数组里面,若是没有,就执行if下面的函数。
4.没有出现这个随机数,indexOf()这个方法会返回-1,这是判断条件的依据。
5.当随机数达到三个了就跳出循环。此时num数组已经去重完毕。
如下是演示的一个栗子,当数组里面已经有6了,再随机到6的时候,就会跳过push,直到随机到不重复的。
以上就是本文介绍的一些随机数的知识点。
最后:如需转载,请放上原文连接并署名。码字不易,感谢支持!由于我常常看不懂别人写的分享,因此我的写文比较偏小白,写的很差之处,欢迎指点。而后就是但愿看完的朋友点个喜欢,也能够关注一下我。
ps:目前待业,坐标北京,本人适应互联网快节奏,高强度,持续学习,持续成长,认真,严谨,学习积极性强。中小公司大佬求带走,邮箱:1677593011@qq.com。
掘金我的主页
2017.5.9