js生成不重复的随机数

今天在做蓝桥杯模拟赛题目的时候看到了这个题目,特此做个记录,主要就是利用的递归还有判断语句就能实现

const getRandomNum = function (min, max, countNum) {
  let arr = [];
  // 在此处补全代码
  function produceNum(){
    let num=Math.floor((Math.random()*(max-min))+min)
    if(arr.indexOf(num)==-1){ //判断不存在就push
      arr.push(num)
    }else{
      produceNum() //存在了重新调用
    };
    if(arr.length<countNum){ //判断数组长度是否小于所需长度
      produceNum();
    }
  }
  produceNum()
  return arr;
};

然后在看到了一个朋友的代码,觉得更加方便,也再次记录

function produceNum(){
  let arr=[];
  for(let i=0;i<arr.length;i++){
    let num=Math.floor((Math.random()*(max-min))+min);
    if(arr.indexOf(num)==-1){ //不存在推入
      arr.push(num);  
    }else{
      i--; //存在了使i-1增加一次循环次数
    }
  }
  return arr;
}

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值