您当前的位置:首页 > 圈子

js随机数不重复的数组

2024-10-19 15:46:04 作者:石家庄人才网

本篇文章给大家带来《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

js随机数不重复的数组

nt);}```

方法二:使用 Set

js随机数不重复的数组

数据结构

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

js随机数不重复的数组

eturn [...set];}```

比较两种方法

方法一的时间复杂度为 O(n),空间复杂度也为 O(n),其中 n 为可能数字的范围。方法二的时间复杂度取决于随机数的分布情况,最坏情况下可能需要生成很多次随机数才能得到 count 个不重复的数字,空间复杂度也为 O(n)。

在实际应用中,如果范围 n 不是很大,两种方法的性能差异并不明显。如果 n 非常大,可以根据实际情况选择合适的方法。例如,如果只需要生成少量的不重复随机数,使用方法二效率更高;如果需要生成大量的随机数,使用方法一效率更高。石家庄人才网小编建议根据实际情况选择合适的方法。

石家庄人才网小编对《js随机数不重复的数组》内容分享到这里,如果有相关疑问请在本站留言。

版权声明:《js随机数不重复的数组》来自【石家庄人才网】收集整理于网络,不代表本站立场,所有图片文章版权属于原作者,如有侵略,联系删除。
https://www.ymil.cn/quanzi/18097.html