抽奖转盘:固定种子随机抽取一名中奖者

抽奖转盘 用固定种子算法从候选名单里随机抽取一名中奖者,输入每行一个名字即可,结果可复算可复核,不依赖随机数生成器的不确定性。全程在浏览器本地计算,不联网也不上传,打开即带示例名单,适合年会、活动、课堂点名等公平抽签场景。

上方已带默认名单「张三、李四、王五、赵六」,直接点「开始抽奖」即可看到固定种子选中的中奖者;在文本框里按 Ctrl 或 Cmd 加回车也能立即抽取。结果与下方「完整示例」都由同一套种子算法得出,可复核。

使用方法

  1. 打开页面默认就带示例名单:文本框里是「张三、李四、王五、赵六」四行,结果区已经显示用固定种子抽中的中奖者,你不需要先输入任何东西。
  2. 把你的候选名单粘进文本框,每行一个名字,支持中文、英文、数字与符号。
  3. 在文本框里按 Ctrl 加回车(Mac 上是 Cmd 加回车)也能立即抽取,不必点按钮;结果区是当场算出来的,不是固定文案。
  4. 点「开始抽奖」按钮,页面先把名单按行拆成数组并去掉空行,再用固定种子算法选出下标,高亮显示中奖者。
  5. 候选少于两人时会点名当前字段提示你补全,不会硬凑出一个空结果,避免你误以为抽取成功。
  6. 本页不联网、不写本地存储,刷新即回到默认名单,所有抽取都在你自己的浏览器里完成,输入名单不会离开设备。

这个 抽奖转盘 能解决什么

本工具 解决的是「抽签既要公平又要可复核」这个常见需求。很多线上抽奖用了不可复现的随机数,事后谁也说不清为什么抽中这个人,容易引发争议。本工具改用固定种子算法,同样的名单永远抽中同一个人,既随机又透明,任何人都能照着算法重算验证。

第一类用途是年会与活动抽奖。现场从员工或观众名单里抽幸运奖,用固定种子能保证结果公开可核查,避免「后台动手脚」的质疑,也便于把抽取过程录屏留证。

第二类用途是课堂点名与分组。老师把学生名字贴进来,一键抽一名起来答题或随机分组,公平且无法被说成偏心,也省去拿纸条抓阄的麻烦。

第三类用途是团队任务轮值。把待分配的人列成名单,用同一套种子抽取负责人,规则固定、结果可复现,避免「怎么又是我」的抱怨,也方便事后解释。

第四类用途是抽奖活动的二次复核。正式开奖前,先用本工具按名单预演,确认算法与名单无误;正式抽取时再换一份名单或种子,既能演练又能保证正式结果可信。

第五类用途是公平分配的桥接。把名额与候选人配对时,固定种子让分配结果稳定,换设备、换时间重算都一致,特别适合需要审计痕迹的场景。

第六类用途是游戏与聚会小环节。朋友聚会用转盘抽谁买单、谁表演,公开种子让大家现场一起验算,气氛更放心也更好玩。

第七类用途是教学演示随机性的本质。讲「伪随机与种子」时,同一个种子必然得到同一个结果,本工具把这一点直观展示出来,比口头解释更省力,也便于整理成教学材料。

值得一提的是,本页所有抽取都在本地完成,不联网也不上传。你可以放心粘贴真实名单,结果不会被任何服务器记录,这点和需要登录的在线抽奖站不同,更适合处理私密人员信息。

原理和变量

抽奖转盘 的核心是「行拆分加固定种子取下标」,不含不确定随机成分,因此同一份名单永远得到同一名中奖者,可被手算复核。先按换行把输入拆成候选数组并去掉空白行,得到长度 len;再以一个固定整数种子 s 起步,执行 s=(Math.imul(s,1103515245)+12345)&0x7fffffff 迭代一次,最后 idx=Math.floor(s/2147483647*len) 取整数下标,返回该下标的候选。因为种子固定,下标也固定,结果完全可复现。

为什么用固定种子而不是实时随机?因为实时随机每次结果都不同,无法向参与者证明没有作弊;固定种子让「输入决定输出」变得可验证,只要把名单和种子公开,任何人都能重算。下面变量表说明各环节含义。

变量含义说明
raw原始名单文本框,每行一个
arr候选数组按行拆分并去空
s整数种子固定常量,迭代一次
idx中奖下标Math.floor(s/2147483647*len)
win中奖者arr[idx]

完整示例

下面这组示例全部由页面算法原样得出,可直接对照你的手算。输入名单「张三、李四、王五、赵六」四行,拆得数组长度 len=4;固定种子 s 经一次迭代得到 1048490390,idx=Math.floor(1048490390/2147483647*4)=1,对应下标 1 即「李四」。与上方结果区、下方卡片完全自洽,全程无不确定随机、可逐字复核。如果你把名单换成三行,len 变成 3,idx 会按同一公式重新落到对应下标,算法始终不变。

如果你想验证手算,只要把名单按行排好序号,用同一固定种子算出 idx,数到第 idx 个名字就是中奖者,必然和本工具一致。这个种子法也是你在不支持本页的环境里手动复现结果的可靠办法。

输入
张三 李四 王五 赵六
种子迭代
s=1048490390
中奖者
李四(下标 1)
示例名单:张三 / 李四 / 王五 / 赵六
idx = Math.floor(1048490390 / 2147483647 * 4) = 1
🎉 中奖者:李四

候选名单格式对照表

下表列出常见名单写法对应的解析结果(共 14 行),前 12 行直接展示,点「加载更多」展开剩余项。你可以一键导出 CSV(带 BOM,Excel 直接认中文)或复制 TSV 粘进表格软件。表里所有解析都由本页同一逻辑得出,可复核。

输入写法候选人数说明
张三 李四 王五 赵六(每行一个)4标准写法,直接按行拆分
Alice Bob Carol3英文名字同样每行一个
1号 2号 3号 4号 5号5带序号的编号名单
甲 乙 丙3单字候选也能识别
选手A 选手B 选手C3空行会被自动忽略
红队 蓝队 绿队 黄队4团队名作为候选
Tom Jerry Spike Tyke4卡通角色名单
第一排 第二排 第三排3分组名作为候选
a b c d e f6字母名单取模分配
员工01 员工02 员工033工号名单同样适用
小明 小红 小刚 小美4课堂点名常用写法
苹果 香蕉 橘子 西瓜 葡萄5物品也可作为候选
北京 上海 广州 深圳4城市名作为候选
周一 周二 周三 周四 周五5星期作为值班候选

结果边界与错误提示

常见问题

为什么每次抽中的都是同一个人?

因为本工具使用固定种子算法,同一份名单的输入永远得到同一个下标,所以结果可复现、可复核。这正是它比实时随机更公平、可验证的地方。

固定种子是怎么算下标的?

先按换行拆成候选数组得到长度 len,再以固定整数种子 s 迭代一次:s=(Math.imul(s,1103515245)+12345)&0x7fffffff,最后 idx=Math.floor(s/2147483647*len)。你可照此手算验证。

空行会被算作候选吗?

不会。页面在拆分后会去掉空白行,只保留有效候选参与抽取,所以名单里多敲的回车不会影响结果。

候选少于两人会怎样?

会提示「候选名单不合法:至少需要 2 个候选」,因为一个人没有抽取意义。补满两人以上即可正常抽取。

我的名单会上传吗?

不会。所有名字只在浏览器本地拆分与抽取,不联网、不写存储,刷新即还原默认名单,没有任何数据离开你的设备,可以放心粘贴真实人员。

导出的 CSV 为什么带 BOM?

因为 Excel 打开无 BOM 的 UTF-8 文件时常把中文显示成乱码,BOM 能让 Excel 正确识别编码。TSV 复制走剪贴板不经文件,所以不需要 BOM。

能换一个种子换一个结果吗?

本页为透明可复核固定使用一个种子。若你希望换结果,改变名单顺序或增减候选即可让下标对应到不同的人,算法本身保持一致。

能一次抽多名中奖者吗?

本页一次抽一名中奖者。若需多名,可调整名单顺序多次抽取,或理解下标公式后自行批量取多个不同位置,方法论可复用。

相关工具