一场抽取只有在人们相信它的时候才有用。获奖者公布的那一刻,第一个问题永远都一样:你是不是做了手脚? 本指南讲的是如何执行一场经得起这个问题的抽取——以及事后如何自证。
五个步骤
第 1 步:在任何人参与之前定义资格规则
把规则写下来,并在开放参与之前公布。谁有资格?是否强制每人只能参与一次?员工或家属是否被排除?
这一步决定了日后的争议到底是关于随机性,还是关于规则。大多数“抽取不公平”的抱怨,其实是规则分歧,而任何随机工具都解决不了规则分歧。
第 2 步:抽取之前冻结名单池
结束参与,然后对最终名单做一次快照。不要从一份还可能增长的名单里抽取——错过截止时间的人可能会声称自己本来会参加。
如果你使用照片导入,就在这个时候仔细核对提取出来的名字。认错的名字是一个合理的质疑点,而在抽取之前修正要便宜得多。
第 3 步:打开重复保护
同一个账号提交两次,就破坏了名单池的意义。启用防止重复姓名,让工具过滤重复项。如果你的规则允许加权参与或多张抽奖券,请改用加权抽奖——它让权重设定变得明确,而不是靠巧合。
第 4 步:设定中奖人数和移除行为
对于多奖项的抽取,请在抽取之前设定中奖人数,并启用将获胜者从名单中移除,这样同一个人不会赢两次。
对于按顺序进行的单奖项抽取——抽取、公布、再抽取——在公布期间,移除行为应设为关闭,再根据你的规则调整。请在开始之前就决定好,而不是在众目睽睽之下临时决定。
第 5 步:抽取、记录、公布
在名单池可见的情况下执行抽取。保存结果面板的截图,截图要包含参与者名单。把两者一起公布。

那张截图就是你的证据。它显示了抽取那一刻谁具备资格。

为什么结果确实是随机的
大多数工具使用 Math.random()——一个伪随机数生成器。它很快,但它是确定性的:从原则上说,它的内部状态可以被重建,从而预测出之后的每一个结果。休息时间的随手抽奖没人关心。但对于一个奖品、一次付费推广,或任何具有法律效力的事情,它就是错误的基础。
RandomSelect 使用浏览器的 crypto.getRandomValues(),它从操作系统的密码学来源获取熵。真正重要的性质有:
- 独立性——每次抽取都与之前和之后的抽取无关
- 没有可供操纵的种子——结果无法被用户输入或时机带偏
- 均匀分布——每个名字的概率完全相等
你可以阅读平台自己的审计页面,了解完整解释:公平性是如何核验的。
终结大部分争论的那个细节
动画只是装饰。
获胜者在转盘开始转动之前就已经算出来了。然后动画朝着这个既定的结果播放。
这一点很重要,因为它意味着没有人能通过点击时机、观察转盘转得多快,或判断何时“点”按钮来影响结果。不存在可利用的时间输入,因为时间根本就不是输入。

如果有人说快点击和慢点击会产生不同的获胜者,那他可以自己验证:用不同的点击时机把同一次抽取做一百遍。分布不会改变。
让结果可以被公开核验
对于高风险的抽取——带奖品的品牌活动——请公布这四样东西:
- 资格规则,在开放参与之前就已写好
- 最终冻结的参与者名单
- 随机选择方法——写明工具名称,并注明它使用密码学随机数生成器
- 记录——展示抽取过程、且名单可见的视频或截图
这就是一条完整的审计链。任何人都能核对:规则是否先行公布,以及记录中的名单是否与你声称冻结的那个名单池一致。
应对质疑
“动画太快,看不清。” 指出获胜者在动画之前就已确定,并出示显示名单的截图。
“你的工具可能选了另一种顺序。” 那就用同一份名单再抽一次。工具施加的任何随机化都会表现为顺序变化,任何人无需查看代码就能观察到。
“我根本没参加过。” 这是规则问题,不是随机性问题。指出已公布的资格规则和各人的参与时间戳。
“名字是从照片里认错的。” 在抽取之前匿名处理并重新公布修正后的名单。这正是为什么照片导入必须在冻结之前核对,而不是之后。
常见错误
- 从一份还在增长的名单里抽取——必须先结束参与
- 没有重复保护——重复参与导致重复中奖,是最常见的争议
- 抽取进行到一半才公布奖品数量——事先决定,过程中记录
- 公布结果却不公布名单——截图才是证据
- 对不满意的结果重抽——重抽就是一次新的抽取,声称旧的作废,只会招来你正想避免的猜疑
准备好抽一次了吗?打开随机抽奖或姓名转盘——两者使用同一套密码学随机机制,所以关于公平性的论证完全通用。
RandomSelect.net——让抽取经得起核验。