跳到主内容
UniKit

抽奖转盘

把奖项填进 Canvas 转盘,按权重分配扇区,点一下就能旋转抽取;支持跳过动画快速抽取、抽中后移除奖项、中奖历史与每个奖项的中奖次数统计。

浏览器本地运行所有计算都在你的浏览器里完成,数据不会离开本机。

奖项设置

随机数来自浏览器的 crypto.getRandomValues,全程在本地完成。

抽中后移除该奖项已抽中的奖项不再参与后续抽取

转盘

结果

点击「开始抽奖」或「快速抽取」试试手气。

参与抽奖的奖项

  • 奖项一×1
  • 奖项二×1
  • 奖项三×1

中奖次数统计

  • 奖项一0 次
  • 奖项二0 次
  • 奖项三0 次

中奖历史

还没有中奖记录。

这个工具能做什么

  • 年会、直播或课堂抽奖:把奖项填进转盘,按权重决定扇区大小,一等奖可以设成小概率。
  • 不知道吃什么、谁来发言这种日常决策,转盘转一下比掷骰子更有仪式感。
  • 需要公平可复现的抽奖时用「快速抽取」跳过动画,中奖结果按权重随机,随机数来自浏览器加密级随机源。
  • 多轮抽奖时打开「抽中后移除」,已中奖的奖项不再参与,中奖历史和中奖次数统计会自动累积。

示例

输入

一等奖,1
二等奖,3
谢谢参与,6

输出

扇区角度:-90° ~ -54°(一等奖,10%)· -54° ~ 54°(二等奖,30%)· 54° ~ 270°(谢谢参与,60%)

整圈 360° 从正上方(-90°)开始按权重顺时针切分,权重和 1+3+6=10,所以扇区比例是 10% / 30% / 60%。

常见问题

权重是怎么起作用的?

每个奖项的权重决定它占整圈的比例,权重越大扇区越大,中奖概率也越高。权重写 0 的奖项扇区为 0 度,永远不会被抽中;如果所有奖项权重都是 0,会退化成等概率抽取。

快速抽取和正常旋转结果一样吗?

一样。两种方式调用同一个按权重随机挑选的函数,区别只是正常旋转会跑一段缓出动画再把指针停在中奖扇区的中线上,快速抽取直接出结果。

奖项名太长显示不全怎么办?

扇区里的文字超过 8 个字符会截断并加省略号,按码点计数,所以 Emoji 不会被切成乱码。中奖结果、参与奖项列表和中奖历史里显示的都是完整名字。

权重写错了会怎样?

权重不是数字或为负数会报错并提示权重必须不小于 0;只写「奖项,」这种空权重也会报错。奖项列表为空时点抽奖会提示先填至少一个奖项。

抽奖结果是真随机吗?

随机数取自浏览器的 crypto.getRandomValues,不是 Math.random,所以是可预测性更低的加密级随机源,并且全程在本地完成,不上传任何数据。

关键词:prize wheelspinner wheellucky drawrouletterandom wheel抽奖转盘大转盘抽奖转盘幸运抽奖权重

同类工具