js随机数不重复的数组
本篇文章给大家带来《js随机数不重复的数组》,石家庄人才网对文章内容进行了深度展开说明,希望对各位有所帮助,记得收藏本站。
在 JavaScript 中,生成一组不重复的随机数数组是一个常见的需求,特别是在处理抽奖、洗牌算法等场景。本文将介绍两种常用的方法来实现这个目标。
方法一:利用数组下标
这种方法的核心思想是创建一个包含所有可能数字的数组,然后随机交换数组元素的位置,最后截取所需长度的子数组即可。
```javascriptfunction getRandomArray(count, range) { // 创建一个包含 1 到 range 的数组 const arr = Array.from({ length: range }, (_, i) => i + 1); // 随机打乱数组元素的顺序 for (let i = range - 1; i > 0; i--) { const j = Math.floor(Math.random() ○ (i + 1)); [arr[i], arr[j]] = [arr[j], arr[i]]; } // 返回前 count 个元素 return arr.slice(0, cou
nt);}```方法二:使用 Set 数据结构
ES6 提供的 Set 数据结构可以保证元素的唯一性,利用这个特性,我们可以不断生成随机数并添加到 Set 中,直到 Set 中元素个数达到要求为止。
```javascriptfunction getRandomArray(count, range) { const set = new Set(); while (set.size < count) { set.add(Math.floor(Math.random() ○ range) + 1); } // 将 Set 转换为数组 r
eturn [...set];}```比较两种方法
方法一的时间复杂度为 O(n),空间复杂度也为 O(n),其中 n 为可能数字的范围。方法二的时间复杂度取决于随机数的分布情况,最坏情况下可能需要生成很多次随机数才能得到 count 个不重复的数字,空间复杂度也为 O(n)。
在实际应用中,如果范围 n 不是很大,两种方法的性能差异并不明显。如果 n 非常大,可以根据实际情况选择合适的方法。例如,如果只需要生成少量的不重复随机数,使用方法二效率更高;如果需要生成大量的随机数,使用方法一效率更高。石家庄人才网小编建议根据实际情况选择合适的方法。
石家庄人才网小编对《js随机数不重复的数组》内容分享到这里,如果有相关疑问请在本站留言。
- 上一篇:js代码格式化快捷键是什么
- 下一篇:返回列表
版权声明:《js随机数不重复的数组》来自【石家庄人才网】收集整理于网络,不代表本站立场,所有图片文章版权属于原作者,如有侵略,联系删除。
https://www.ymil.cn/quanzi/18097.html