2021年年会JS抽奖算法思路!

2021年年会JS抽奖算法思路!
最新回答
干凈没朋友

2022-04-14 01:26:00

如何在会议现场实现公平随机抽奖?这里提供两种方法,首先考虑直接随机抽取。

方法一:直接抽取

生成1至62的数字数组,随机抽取10个不重复的数字。此方法直观,操作简单,但需要进行10次splice操作。

方法二:先洗牌再抽取

将所有数字进行洗牌,一次抽取10个数字。此方法避免了重复抽取,但存在冗余排序,且不支持连续抽奖。

优化版:无需洗所有牌

只需循环10次抽取,无需排序全部62个数字,简化操作流程。

支持连续抽奖的解决方式

考虑将抽中的数字从数组中提取出来,避免函数有副作用。或者,设计一个构造器来执行初始化操作,使代码更优雅。

利用ES6的generators处理多次抽取的场景,简化代码逻辑。

技巧总结:使用Array(n).fill().map(...)快速构造数组。

现场抽奖的需求虽简单,却能激发对算法细节的思考。希望本文提供的方法和技巧能帮到您,期待您的想法和建议,欢迎在评论区分享。