转盘抽奖
在线转盘抽奖:自定义选项与权重,缓出动画随机抽取,支持抽中后移除与历史记录。
使用说明
- 在选项列表里一行写一个选项,需要区分概率时写成「选项,权重」,例如「一等奖,1」。
- 权重越大,扇区面积越大,被抽中的机会也越多。省略权重时按 1 计算。
- 点「开始抽奖」或按空格键,转盘缓出旋转三到五秒,最后停在一个随机扇区上。
- 结果会显示在下方,中奖扇区同时高亮,点「复制结果」即可复制到剪贴板。
- 勾选「抽中后移除该选项」,中奖的选项会自动从列表里消失,适合连续抽取不重复的场景。
常见问题
抽奖结果是怎么产生的?
权重和扇区面积是什么关系?
「抽中后移除」有什么用?
选项和历史会上传到服务器吗?
使用步骤
- 填写选项与权重
在文本框里一行写一个选项,需要区分概率时写成「选项,权重」,例如「一等奖,1」。权重省略时按 1 计算,扇区面积随权重变化。
- 开始旋转并等待停稳
点「开始抽奖」或按空格键,转盘会旋转三到五秒。速度由快变慢,最后停在按权重抽出的扇区上并高亮显示。
- 复制中奖结果
结果区显示中奖选项的完整文字,扇区内的长文本会被截断。点「复制结果」把中奖选项复制到剪贴板,方便粘贴到聊天窗口或表格里。
- 用移除模式连续抽取
勾选「抽中后移除该选项」,每次抽完后中奖选项自动从列表消失,转盘重画。剩余选项少于两个时开始按钮禁用,避免无效抽取。
- 重置选项与清空历史
点「重置选项」恢复初始列表,点「清空历史」删除最近五条记录。历史只保存在当前页面内存里,刷新页面后自然消失。
工具详细介绍
转盘抽奖把决定权交给随机数,适合午餐选择、课堂点名、直播抽奖和团建分组。选项一行一个,写成「选项,权重」就能调整概率,权重 1 与权重 3 的扇区角度是一比三,面积与真实概率保持一致。转盘用 canvas 绘制,颜色取自站点主题变量,跟随浅色与深色模式变化。长选项会在扇区内截断,完整文字显示在下方结果区,抽完可以一键复制。
旋转动画使用 requestAnimationFrame 配合缓出曲线,时长三到五秒。转速由快变慢,停在哪个扇区由权重随机决定,停稳后该扇区高亮。随机数来自浏览器内置的加密安全随机源,权重与扇区比例对应,抽取过程公平且可复核。开启「抽中后移除」后,中奖选项会从列表删除,转盘随即重画。剩余选项少于两个时自动禁用开始按钮,适合不重复的连续抽取。
原理与背景
按权重抽取的常见做法是先把所有选项的权重相加,得到总权重。再在零到总权重之间取一个随机小数,然后依次减去每个选项的权重,第一个减成负数的位置就是中奖选项。整个过程只用一次随机数,耗时与选项数量成正比。扇区角度按同样的比例分配,视觉面积与真实概率一一对应。随机小数由 32 位随机整数除以二的三十二次方得到,取值空间足够大,权重差异很小的选项也能分出胜负。
旋转动画的难点是让转盘恰好停在抽中的扇区上。实现时先算出该扇区中点在转盘坐标系里的角度。接着求出指针指向它所需的旋转角,再加上若干整圈作为总位移。最后用缓出曲线在固定时长内插值,圈数取四到六圈,时长三到五秒,看起来接近真实的转盘减速。系统开启减少动态效果时,工具把时长缩短到不足半秒,圈数减到一圈,结果不变,只是动画更短。
典型使用场景
- 直播与活动抽奖
抽奖环节把奖项与权重填进列表,一等奖权重 1、二等奖权重 3、谢谢参与权重 10。开启抽中后移除,中奖者不会重复出现,历史记录留档方便复盘,投影到大屏上观众也能看清停稳过程。
- 团队午餐与值班分配
午餐吃什么、谁去拿快递、周末谁值班这类小事,把候选写成列表直接转一次。想照顾多数人的偏好就给常去的店更高权重,抽完复制结果发到群里,省去来回讨论的时间。
- 课堂随机点名
把学生名单一行一个粘进列表,权重统一按 1 计算,每次点开始就随机抽一位。抽中后移除能保证一节课里不重复点名,五条历史记录也方便核对是否漏抽。
使用技巧
- 权重可以写小数,例如 0.5,用来表示概率只有一半的选项。
- 粘贴名单时不必先整理,空行会被自动跳过,但整齐的列表更容易核对。
- 扇区里的文字过长会截断,中奖后从结果区复制完整文字,不会丢信息。
注意事项
- 权重不是百分比
权重只表示相对比例,不必加起来等于 100。权重 1 与 1 是各占一半,权重 2 与 1 则是三分之二对三分之一。想按百分比设置,先把所有选项换算到同一基准再填写。
- 长选项会被截断
扇区空间有限,过长的文字在转盘上以省略号截断,完整内容显示在结果区。给选项取简短的名字,或者抽完后用复制按钮取回原文,都能避免误读。
- 历史只在当前页面
最近五条记录保存在页面内存里,刷新或关闭标签页就会清空,也不写入本地存储。需要留底的抽奖或点名,抽完先复制中奖结果,或者手动抄录到文档里。