众所周知,JavaScript只提供一个随机数random方法,并且Math.random()产生的是0~1(不包含1)之间的随机小数,所以使用过程中一般不能直接使用,需要经过处理之后才能得到自己想要的随机范围。这次就总结几种常用情况备忘,方便我以后查找。

一、随机取出数组中的任意一个元素
一般遇到这种情况,我比较倾向于用一个相当于固定公式。
Math.floor(Math.random()*数组长度)

var arr = [1,2,'a','b'...,'end'];

//随机背景颜色
elem.style.backgroundColor = arr[Math.floor(Math.random()*arr.length)];

因为random()产生的是0~1之间,然后再乘上数组长度,四舍五入向下取整。而数组的索引方式,又是从0开始,所以正好就能随机数组长度范围内的数。

二、随机1~10或1~100整数等类似范围
一般这种随机情况,平时也十分常见,但也特别好处理。

Math.floor((Math.random()*10)+1)  //不加1随机范围是0~9

三、随机0-10或0-100
这种情况应该也会经常用到,所以也有必要写一下。

//这种方法  0-100或0-1000理论上可行
  Math.round(Math.random() * 100);  //返回0-100 因为Math.round()方法四舍五入为最接近的数 理论上来说 当随机到99.5以上的小数时就会取整为100

四、随机类似任意范围整数
这种情况可能偶尔也会遇到,所以也可以写个备忘。

//返回 min(包含)~ max(不包含)之间的数字
function getRndInteger(min, max) {
  return Math.floor(Math.random() * (max - min) ) + min;
}

//返回 min(包含)~ max(包含)之间的数字
function rand(min, max) {
  return Math.floor(Math.random() * (max - min + 1) ) + min;
}

console.log(rand(0,2));
console.log(rand(50,80));

暂时写到这里,如有错漏之处,等以后实际使用过程中发现后再回来修改。


本文由 大古 创作,采用 知识共享署名 3.0,可自由转载、引用,但需署名作者且注明文章出处。

还不快抢沙发

添加新评论