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个不重复的随机数
解释:
生成所有可能的数字:首先生成一个包含区间 [a, b] 所有整数的数组。
打乱数组:使用 Fisher-Yates 洗牌算法随机打乱这个数组。
选取不重复的数字:通过截取打乱后数组的前 count 个元素来确保数量不重复。
确保您请求的随机数数量(count)不超过区间内的总数(b - a + 1)。如果超过,函数将抛出一个错误。