跳到主要内容
Tooletto

决策转盘

输入你的选项,转动转盘随机选出一个。适合决定吃什么、从名单里抽人、分配任务,或者了结一场争论——随机性真正公平。

  • 文件永不离开你的设备
  • 免费,无需注册
  • 无水印
  • 加载后可离线使用
Loading tool…

如何决策转盘

  1. 1

    添加你的选项

    每行一个——名字、餐食、任务,什么都行。

  2. 2

    转动

    转盘会使用密码学随机性随机选出一个结果。

  3. 3

    移除或再转一次

    可以选择移除中选者,这样就不会有人被抽中两次。

为什么中选者是在转盘转动之前就已经确定的

很多转盘工具的运作方式是从动画反向推导的:先把转盘旋转到某个视觉上好看的停止角度,再读出指针恰好落在哪一格作为结果。这听起来无害,但会引入一种微妙的统计偏差,因为把一个连续的旋转角度转换成一个离散的中选格子,涉及的浮点数运算无法在任意数量的选项之间被均匀整除——某些格子最终落在指针下的次数,会因为这种舍入过程本身的产物而略微多于其他格子,而不是因为转动本身存在任何真正的不公平。这个工具的运作方式正好相反:先用真正的密码学随机源选出中选者,转盘的旋转动画纯粹是一种视觉点缀,停在一个早已确定的结果上——这个动画从来不会影响哪个选项真正获胜。

为什么用拒绝采样,而不是简单的取模来选出中选者

把一个随机数变成"从 N 个选项里选一个"最常见的方式,是取一个随机整数,计算它除以 N 的余数——但除非 N 恰好能整除这个随机数所取自的那个范围,否则这会引入一种微小但真实的偏差,让某些选项比其他选项有着微微更高的中选概率,纯粹是这个除法无法整除所产生的一个副产物。拒绝采样完全避免了这个问题:它抽取一个随机值,如果这个值恰好落在那一小段分布不均匀的余数区间里,就丢弃它、重新抽取,如此反复,直到抽到一个落在这个范围里能被整除部分的值。每一个选项最终得到的概率,是精确相等,而不只是近似相等——这是一个真正的公平保证,而不是一个接近公平的近似值。

在有放回抽取和无放回抽取之间做选择

每次转动后都把全部选项留在池子里,适合重复出现也没关系、甚至是理想情况的场合——决定今晚吃什么,并不需要排除昨天的答案。而在每次转动后移除中选者,则是在模拟统计学家所说的无放回抽样,这是每个选项在一系列转动中最多只应该被选中一次时,公平且恰当的模式——在团队里分配一套固定的任务、从一份名单里抽出多位不同的获奖者,或者在一堂课上点名学生、且不在其他人都轮过一遍之前重复点到同一个名字。

在选项列表增长时保持标签可辨认

一个只有几个条目的转盘,能给每一个条目分配一块宽裕的扇形区域,有足够的空间放下完整的标签,而同样的转盘被分成五十个条目时,每一块扇形只能分到一小片圆环,塞进一个狭窄楔形里的文字很快就会缩小或被截断。大约五十个选项左右,是标签在一个常规尺寸的转盘上开始真正变得难以辨认的临界点——无论添加了多少条目,底层的随机选择始终保持同样公平,但视觉呈现是一份长列表值得留意的实际限制。

常见问题

结果真的是随机的吗?

是的。中选者是用 `crypto.getRandomValues` 选出的——和生成密码学密钥所用的是同一个来源——之后转盘动画才会旋转并停在这个结果上。很多转盘网站是先播放动画,再从最终角度读出结果,这会因为浮点数舍入而引入微妙的偏差。

每个选项的中选概率相等吗?

完全相等。这个抽取过程用的是拒绝采样,而不是简单的取模运算,所以没有任何一个选项会比另一个哪怕只高出一点点的概率——一个简单实现会引入的那种偏差虽小,但确实存在。

可以用这个来抽学生或团队成员吗?

可以,开启"移除中选者"选项,能让它变成一次不放回的公平抽取——每次转动都从尚未被选中的人里抽取。你输入的任何内容都不会被传输,所以一份班级名单会一直留在你自己的设备上。

最多能添加多少个选项?

实际上,大约到 50 个左右,转盘上的标签就会开始变得难以辨认。选项数量本身不会影响随机性。

决策转盘常见任务