重复中奖是怎么发生的
复盘下来,原因基本只有四类:
- 抽完没把人移出池子:每轮都从完整名单里抽,理论上抽得越多越容易撞车。
- 多轮之间数据没打通:特等奖用一套名单,一等奖用另一份复制出来的表,两边各自去重,跨奖项就会重复。
- 中途手工改过名单:有人临时请假被删掉,或临时加人,“已中奖”标记跟着丢了。
- 人工核对漏项:去重逻辑没问题,但递奖品的人看错了名字。
前三条是软件问题,第四条是流程问题。两者都要处理。
机制一:抽后移出待抽池(最可靠)
最稳妥的做法是维护两个集合:「待抽池」和「已中奖」。每次抽奖从待抽池里选人,被选中的人立刻从待抽池移出、写进已中奖。
这个机制的好处是从根本上不可能重复——已经离开池子的人,不会再被随机到。坏处是需要正确维护池子状态,一旦池子被误清空,历史中奖记录也要一并保留。幸运抽签采用的就是这个机制,并且把中奖记录独立保存,清空待抽池不会影响已中奖名单。
机制二:中奖标记位去重
另一种做法是给每个人加一个“是否已中奖”的标记,抽中时置位,抽取时先过滤掉已置位的人。
这种机制实现简单,但有两个隐患:一是标记位和姓名绑定,如果名单里有两个同名的人,第二个会被误判成“已中奖”;二是标记位通常存在内存里,刷新页面就没了。所以它更适合单轮、小规模的场合。
机制三:按奖项划分不交叉
如果年会的规则是“特等奖中过的人不能中一等奖”,那么跨奖项去重是必须的。如果规则是“每个奖项独立、允许重复”,那就不该去重。
规则要先定清楚,再去配工具。很多现场纠纷不是技术问题,而是事先没说好。建议在年会通知里明确写出:一人能否重复中奖。
幸运抽签是怎么做的
- 中奖者自动从待抽池移出,不会在后续轮次再次出现
- 中奖记录跨奖项统一保存,特等奖和一等奖不会撞人
- 保留断点续抽能力,中途关闭页面再回来,已中奖状态不丢
- 可随时导出中奖名单,用于现场核对与事后公示
批量抽取时同样适用:一次抽多人的每个人都会各自移出池子,同一批次内也不会重复。
现场人工核对的三个动作
软件去重再可靠,也建议加一道人工防线,成本很低:
- 大屏公示:抽完一个奖项后,把中奖名单停在大屏上三秒钟,让人群自己发现问题。
- 专人核对:安排一位同事拿着奖品发放表,逐项核对上台的人与屏幕上的名字。
- 即时导出:每抽完一个重要奖项就导出一份,万一后面出问题,有据可查。
踩坑提醒:测试阶段抽中的名字会留在中奖记录里。
正式开场前务必点「重置全部」,否则会凭空少掉一个名额,而且这个错误很难当场察觉。