首页 经验

JavaScript 中生成一个不重复的随机数列表

时间: 2024-11-03 20:11:33

(部分内容来自网络,其真实性存疑,为了避免对您造成误导,请谨慎甄别。)

如果您想要在 JavaScript 中生成一个不重复的随机数列表,可以使用一个简单的算法。基本思路是先生成一个包含所有可能数值的数组,然后随机打乱这个数组,然后从中选择您需要的数目,例如:

javascript
function getUniqueRandomNumbers(a, b, count) {  
    // 确保 count 不超过可能的数量      if (count > (b - a + 1)) {  
        throw new Error("请求的数量超出了区间的唯一数值总数");  
    }  

    // 创建一个包含区间内所有整数的数组      const numbers = [];  
    for (let i = a; i <= b; i++) {  
        numbers.push(i);  
    }  

    // 打乱数组的函数      const shuffle = (array) => {  
        for (let i = array.length - 1; i > 0; i--) {  
            const j = Math.floor(Math.random() * (i + 1));  
            [array[i], array[j]] = [array[j], array[i]]; // 交换元素  
        }  
    };  

    // 打乱 numbers 数组      shuffle(numbers);  

    // 返回前 count 个元素      return numbers.slice(0, count);  
}  

// 使用示例  const a = 1;  
const b = 10;  
const count = 5;  
const uniqueRandomNumbers = getUniqueRandomNumbers(a, b, count);  
console.log(uniqueRandomNumbers); // 生成一个包含 1 到 10 之间5个不重复的随机数

解释:

  1. 生成所有可能的数字:首先生成一个包含区间 [a, b] 所有整数的数组。

  2. 打乱数组:使用 Fisher-Yates 洗牌算法随机打乱这个数组。

  3. 选取不重复的数字:通过截取打乱后数组的前 count 个元素来确保数量不重复。

确保您请求的随机数数量(count)不超过区间内的总数(b - a + 1)。如果超过,函数将抛出一个错误。

上一个 抖音直播自然推流逻辑 文章列表 下一个 js生成[a,b]区间的随机数

最新

工具

© 2019-至今 适观科技

沪ICP备17002269号