优秀的编程知识分享平台

网站首页 > 技术文章 正文

【JS 随机数组】生成唯一随机数组

nanyue 2025-03-07 22:30:18 技术文章 92 ℃

之前分享了一篇关于使用随机数生成不定长字符串和随机色的文章,今天和大家分享一下如何使用Math.random生成唯一不定长数组。

唯一随机数组即数组内数字唯一,这对一些特定场景会有特殊用处,比如播放随机音乐,对数据进行随机采样或者棋牌类的洗牌动作,这些特殊场景都会要求生成唯一随机数组

功能说明

  1. 传入数组长度以及数值范围,范围一定长度的唯一随机数组
  2. 数组长度应小于等于数值范围

实现步骤

  1. 使用Set创建一个Set集合,集合可以避免键值重复
  2. 定义数组长度以及数值区间
  3. 循环生成随机数插入集合,直到满足数组长度

代码

/**
 * 生成指定范围内的不重复随机数数组
 * @param {number} count - 需要生成的随机数数量
 * @param {number} min - 随机数范围的下限(包含)
 * @param {number} max - 随机数范围的上限(包含)
 * @returns {number[] | string} - 返回生成的随机数数组,如果 count 大于范围则返回错误信息
 */
function generateRandomNumbers(count, min, max) {
    // 确保 min,max 是范围的下限
    min = Math.min(min, max);
    max = Math.max(min, max);

    // 如果 `count` 大于 `max + 1`,则返回错误信息
    if (count > max - min + 1) {
        return "count cannot be greater than the upper limit of range";
    } else {
        // 使用 Set 来存储不重复的随机数
        let uniqueNumbers = new Set();
        while (uniqueNumbers.size < count) {
            // 生成一个在 `min` 和 `max` 之间的随机数,并添加到 Set 中
            uniqueNumbers.add(Math.floor(Math.random() * (max - min + 1)) + min);
        }
        // 将 Set 转换为数组并返回
        return Array.from(uniqueNumbers);
    }
}
// 调用函数并打印结果
console.log(generateRandomNumbers(5, 5, 10));


最近发表
标签列表