决策轮盘
让轮盘帮你做选择,告别选择困难症
暂无记录,转盘转起来吧
什么是决策轮盘?
决策转盘会从输入列表中随机选择一个选项,把小型选择变成可见、共享的过程。它适合课堂活动、团队互动、吃什么、演示顺序、轻量抽奖、头脑风暴,以及多个选项都差不多可接受的场景。它的价值在于减少选择疲劳,让抽选过程更透明。但当选项之间存在不同风险、成本、公平规则或责任时,转盘不能替代判断。用于正式抽奖时,应提前明确参与名单、权重、排除条件和记录方式,保证结果可解释。它最适合低风险、大家都接受随机性的决定。
使用方法
使用方法
- 在输入框中输入选项名称,按回车或点击添加
- 添加多个选项(最多15个),每个选项最多20个字符
- 点击中央「旋转」按钮,转盘开始旋转
- 等待转盘停止,查看随机选中的结果
公平性提示
- 选项应简短且长度相近,方便旋转前所有人都能看清。
- 重要决策时,请先确定选项列表再旋转,避免看到不利结果后更改选项。
使用场景
技术原理
转盘是基于 Canvas 2D 绘制与确定性随机选取的结合。每个扇区通过 ctx.beginPath(); ctx.moveTo(cx, cy); ctx.arc(cx, cy, r, startAngle, endAngle); ctx.fill() 渲染,其中 N 个等分选项各占 2π/N 弧度——十五个扇区即每个 24° 弧度,这也是输入上限为 15 个以保持标签可读的原因。中奖扇区在动画开始前确定:通过 crypto.getRandomValues(new Uint32Array(1))[0] 生成一个 32 位无符号整数,对 N 取模,该整数即为结果。动画随后计算目标旋转角度 fullSpins × 2π + (2π − winnerIndex × sliceAngle − sliceAngle/2),使画布顶部的指针最终指向所选扇区的中心,并在 requestAnimationFrame 中使用缓动曲线(如 easeOutCubic f(t) = 1 − (1−t)³,或 easeOutBack 带有小幅度超调来模拟物理转盘减速)进行补间动画。crypto.getRandomValues 是 Web Crypto CSPRNG(在 Web Crypto API 中指定),由操作系统熵池播种,因此与 Math.random 不同,结果无法通过读取页面状态来预测。加权变体构建长度为 N 的累积概率数组,并在 O(log N) 时间内对随机抽取进行二分搜索。输出完全是视觉和临时性的——不会记录任何内容,因此任何审计轨迹(时间戳、选项列表、截图)必须在页面刷新前从外部捕获。
- Canvas 渲染:每个扇区为 ctx.arc(cx, cy, r, startAngle, endAngle),sliceAngle = 2π / N——15 个选项时每个扇区 24°,这是实际可读性的上限。
- 中奖选择使用 crypto.getRandomValues(new Uint32Array(1))[0] % N——Web Crypto CSPRNG,由操作系统熵播种,适合一次性公平抽取,但不适合可重现的抽奖(无审计轨迹)。
- 动画在 requestAnimationFrame 中以显示刷新率(通常 60 Hz)运行,使用 easeOutCubic f(t) = 1 − (1−t)³ 或 easeOutBack 带轻微超调——曲线是装饰性的,中奖者已事先确定。
- 最终旋转角度为 targetRotation = fullSpins × 2π + (2π − winnerIndex × sliceAngle − sliceAngle/2),使顶部指针落在扇区中心而非边缘。
- 加权选项模式构建权重的前缀和数组,使用二分搜索将均匀随机数映射到扇区,O(log N)——等价于逆 CDF 采样。
- 模偏差在 N ≤ 15 且抽取范围为 2³² 时可以忽略(偏差 ≈ N / (2 × 2³²) ≈ 1.7×10⁻⁹),因此无需拒绝采样循环。
- 每次旋转是独立同分布的——连续旋转可以重复同一选项,这是正确的均匀行为而非 bug;跨旋转去重需要外部记录。
示例
决定午饭吃什么
选项: 披萨、寿司、汉堡、玉米卷、沙拉 → 转动 → 结果: 寿司团建活动
选项: 保龄球、KTV、密室逃脱、迷你高尔夫 → 转动 → 结果: 密室逃脱电影之夜
选项: 动作、喜剧、恐怖、爱情、科幻 → 转动 → 结果: 喜剧常见问题
转盘真的是随机的吗?
是的。中选扇区由 crypto.getRandomValues 选出,再让转盘动画停在该位置。视觉上的旋转只是表演——结果其实早已确定。每次旋转都互相独立。
每个扇区的概率相同吗?
相同。每个选项占据等大的扇区,每个扇区被选中的概率也相同。本工具不提供加权或带偏好的模式,所有选项机会均等。
旋转动画会影响结果吗?
不会。动画只是装饰——结果先算出来,再让转盘转到对应位置。即使你提前停止动画,被选中的扇区也不会变。
下次访问时还能保留转盘配置吗?
不能。选项仅在当前会话中保留。关闭标签页或刷新页面后会丢失。如需复用,请在关闭前自行复制保存。
适合用来做重要决策吗?
适合用于低风险的群体抉择(午餐吃什么、演讲顺序、选秀次序等)——任何选项都能接受、且公开的随机性能避免争执。如果不同选项的后果差距很大,就不该交给转盘——它无法权衡利弊。
为什么有时连续两次选到同一个选项?
每次旋转都互相独立。三个选项时,连续两次选中同一项的概率是 1/3 ≈ 33%;十个选项时是 10%。重复看起来奇怪,但在真正的随机抽选中是数学上预期的现象。
我的选项列表会被上传吗?
不会。转盘完全在浏览器中运行。如选择保存,仅会存到本地,不会传输任何数据。