首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

js 范围内不重复随机数

在 JavaScript 中生成范围内不重复的随机数,可以使用以下方法:

方法一:使用数组和循环

代码语言:txt
复制
function getUniqueRandomNumbers(count, min, max) {
  if (max - min + 1 < count) {
    throw new Error('范围内的数字不够生成指定数量的不重复随机数');
  }
  let numbers = [];
  while (numbers.length < count) {
    let num = Math.floor(Math.random() * (max - min + 1)) + min;
    if (!numbers.includes(num)) {
      numbers.push(num);
    }
  }
  return numbers;
}

// 示例用法
let uniqueRandomNumbers = getUniqueRandomNumbers(5, 1, 10);
console.log(uniqueRandomNumbers);

优势:

  • 实现简单直观。

应用场景:

  • 适用于对随机性要求不是特别高,范围不是特别大的情况。

可能出现的问题及解决方法:

  • 如果范围较小而需要的数量较大,可能会导致性能问题。此时可以考虑使用其他更高效的方法。

方法二:打乱数组顺序

代码语言:txt
复制
function getUniqueRandomNumbers(count, min, max) {
  let numbers = [];
  for (let i = min; i <= max; i++) {
    numbers.push(i);
  }
  for (let i = numbers.length - 1; i > 0; i--) {
    let j = Math.floor(Math.random() * (i + 1));
    [numbers[i], numbers[j]] = [numbers[j], numbers[i]];
  }
  return numbers.slice(0, count);
}

// 示例用法
let uniqueRandomNumbers = getUniqueRandomNumbers(5, 1, 10);
console.log(uniqueRandomNumbers);

优势:

  • 效率相对较高,尤其对于较大的范围和数量。

应用场景:

  • 对随机性要求较高,范围较大的情况。

可能出现的问题及解决方法:

  • 当范围非常大而需要的数量相对较小时,可能会造成一定的内存占用。可以根据实际情况进行优化。
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券