JavaScript 生成随机数

为 JS 中的 Math 对象新增生成不重复随机数方法

方法源码一

/**
 * Math 对象的扩展方法,可用于生成随机数
 * @param  {number} startNum  起始数,整型
 * @param  {number} endNum    终止数,整型
 * @param  {number} count     生成的个数,整型
 * @param  {boolean} repeat   是否重复,true or false
 * @return {Array}            返回数组
 */
Math.randNum = function(startNum, endNum, count, repeat) {
  if (repeat) {
    var ret = new Array();
    for (var i = 0;i < count;i++) {
      // 生成区间范围内的随机数
      ret[i] = Math.floor(Math.random() * (endNum - startNum) + startNum);
    }
    return ret;
  } else {
    var tmp = new Array();
    for (var i = 0;;i++) {
      if (tmp.length < count) {
        // 生成区间范围内的随机数
        var rand = Math.floor(Math.random() * (endNum - startNum) + startNum);
        for (var i = 0;i < tmp.length;i++) {
          if (tmp[i] == rand) {
            // 将生成的随机数进行比对,如果相同则重新生成
            return Math.randNum(startNum, endNum, count, repeat);
          }
        }
        // 向数组添加数据
        tmp.push(rand);
      } else {
        break;
      }
    }
    return tmp;
  }
};

如何调用

Math.randNum(number, number, number, true | false);

demo1

控制台代码

console.log(Math.randNum(3,16,5,true);)

输出 => [4, 15, 15, 15, 17]

demo2

控制台代码

console.log(Math.randNum(3,16,5,false);)

输出 => [15, 14, 6, 11, 4]

方法源码二

一种更简单的写法

var arr = new Array();//新建一个数组

// 向数组赋值 0~100
for (var i = 0;i <= 100;i++) {
  arr.push(i);
}

// 随机排位
arr.sort(function() {
  return 0.5 - Math.random();
});

arr.length = 50;// 指定数组长度

document.write(arr);// 输出数组
亲!!! 听说给作者打赏一杯咖啡钱,会给自己带来好运哦!