算法:从一个数组中随机取出指定数量的不重复的数

131 阅读1分钟
/**
 * 从一个数组中随机取出指定数量的不重复的数
 * @param {Array} arr - 输入的数组
 * @param {number} count - 需要获取的随机数数量
 * @returns {Array} - 包含随机不重复数的数组
 */
function getRandomUniqueNumbers(arr, count) {
    // 确保数组长度大于等于要获取的随机数数量
    if (arr.length < count) {
        throw new Error("数组长度不足,无法获取指定数量的不重复随机数");
    }
    // 复制数组以避免修改原始数组
    let tempArray = arr.slice();
    let result = [];
    for (let i = 0; i < count; i++) {
        // 生成一个随机索引
        let randomIndex = Math.floor(Math.random() * tempArray.length);
        // 将随机索引对应的元素添加到结果数组中
        result.push(tempArray[randomIndex]);
        // 从临时数组中移除该元素,以避免重复
        tempArray.splice(randomIndex, 1);
    }
    return result;
}
// 示例用法
let numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
let randomNumbers = getRandomUniqueNumbers(numbers, 5);
console.log(randomNumbers);