
Js生成随机数的几种方法
在 Javascript 中,生成随机数也有内置函数,即生成随机数函数 random();此外,还可以借住日期 Date 生成随机数。除了上述2个产生随机数的方法,还可以用它们与数组结合,产生指定范围的特殊随机数,以满足特殊需要。
一、用内置函数(方法)random 生成随机数
Javascritp 中的 Math.random() 方法,生成的是一个0到1之间的浮点数(小数),而不像 C# 中的 Random() 方法可任意指定生成随机数范围。所以用 random 生成浮点数后,需要乘一个相应的值并且还要借住 Math 的其它方法帮助生成随机数。
1、用 Math.floor(Math.random()) 生成随机数
Math.floor(Math.random() * 100); //生成0到99的随机数
Math.floor(Math.random() * 100 + 1); //生成1到100的随机数
2、用 Math.ceil(Math.random()) 生成随机数
Math.ceil(Math.random() * 100); //生成1到100的随机数
相关说明:
Math.floor() 方法是取地板(即向下取整),如 Math.floor(6.6) = 6;
Math.ceil() 方法是取天花板(即向上取整),如 Math.ceil(6.6) = 7。
3、用 parseInt(Math.random()) 生成随机数
parseInt(Math.random() * 100); //生成0到99的随机数
parseInt(Math.random() * 100 + 1); //生成1到100的随机数
4、生成指定范围随机数
由于 Javascript 没有提供直接生成指定范围随机数,所以得自己实现,方法如下:
Math.floor(Math.random() * (上限 - 下限 + 1) + 下限);
Math.ceil(Math.random() * (上限 - 下限) + 下限);
parseInt(Math.random() * (上限 - 下限 + 1) + 下限);
选择其中一个方法封装成函数如下:
//under:上限;over:下限
function getRandom(under, over) {
switch (arguments.length) {
case 1: return Math.ceil(Math.random() * under);
case 2: return Math.ceil(Math.random() * (over - under) + under);
default: return 0;
}
}
调用方法:
getRandom(100);//生成1到100的随机数
getRandom(100, 200);//生成100到200的随机数
二、借住时间 Date 生成随机数
var d = new Date();
var n = d.getSeconds(); //生成0到59的随机数
var n1 = d.getMilliseconds(); //生成0到999的随机数
var n2 = d.getMilliseconds() % 201; //生成0到200的随机数
除了取 Date 的秒和微秒外,还可以取小时和分钟(跟取秒生成的随机数相同)。
三、生成满足特殊需要的随机数
有的时候,规定生成的随机数只能取一些任意指定的值;此时,再用上述方法无法满足要求,需要把任意指定的值保存到数组中,然后通过生成的随机数(数组下标)来取数组中的值,实现代码如下:
function getRandom(arr)
{
var n = Math.ceil(Math.random() * (arr.length - 1));
return arr[n];
}
调用方法:
var arr = [ "18", "23", "26", "32", "46", "56" ];
getRandom(arr);