生成不重复随机数有没有性能更好的方法?

const indRandom = (n, maxValue, minValue = 0) => {
  const nNumArray = [...Array(maxValue + 1).keys()];
  const resultArray = [];
  for (let i = 0; i < n; i++) {
    const randomNum = Math.floor((Math.random() * (((maxValue - minValue) + 1) - i)) + minValue);
    resultArray.push(nNumArray[randomNum]);
    nNumArray.splice(randomNum, 1);
  }
  console.log(resultArray);
  return resultArray;
};

indRandom(5, 10000);
阅读 2.7k
1 个回答
function indRandom(n, max){
  var arr = [];
  for(var i = 0; i < n; i++){
    var item = Math.floor(Math.random() * max);
    if(arr.indexOf(item) > -1){ i--; continue; }
    else arr.push(item);
  }
  return arr;
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题