Js生成随机数的几种方法

亮术网 2020-06-20 本网原创

在 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);

本文浓缩标签:随机数