打开就能转的在线转盘:选项在文本框里一行一个,2 到 50 项随便改,改完转盘立刻重画;行尾写 *3 就让这一项占三份角度,扇区跟着变大。四组预置模板(吃什么、是或否、数字 1~10、谁去做)一点就填好,还能开「抽中后移除该项」用来分组和排顺序。结果先由浏览器的加密级随机源定下、再倒推出指针该停的角度,所以指针停在哪一扇就是哪一扇。选项只存在你自己的浏览器里。
怎么用
一转就出结果
页面中间是转盘,顶上那个朝下的三角是固定的指针。点转盘正中的「转」按钮就开始转,点转盘本身、或者按一下空格也一样(焦点在下面的输入框里时空格照常打空格,不会误触)。转动持续四到六秒,速度先快后慢,最后几度慢慢蹭到位;系统里开了「减少动态效果」的话会自动缩短到 0.6 秒,直接给结果。转动期间再点没有反应,转完结果会以大字显示在转盘下面。
选项在下面的框里改
选项框一行一个,前后空格会自动去掉,空行忽略。改完转盘立刻重画,不用点任何「保存」。第一次打开给的是一组中性示例:吃面、吃饭、吃饺子、吃粥、随便。
- 权重:在行尾写
*3,这一项就占 3 份角度。半角*和全角*都认,数字 1 到 99。比如写成「吃面 *3、吃饭、吃粥 *2」,总份数是 6,三项的扇区大小依次是二分之一、六分之一、三分之一。 - 项数:2 到 50 项。多出来的行这一次不算,页面会说明一句。
- 长度:单项超过 24 个字会截断并加省略号;扇区上的字号跟着项数和扇区宽度自动变小,最小到 9 像素,再窄就只显示前几个字加省略号。
- 配色:九色循环,相邻的扇区(包括首尾相接的那一对)保证不撞色。
四组预置模板
顶部的「预置模板」下拉里有四组,选一下就把内容填进选项框:
- 吃什么——吃面 / 吃饭 / 吃饺子 / 吃粥 / 随便;
- 是或否——两项对半分,用来做二选一;
- 数字 1~10——要个数字又懒得手填时用;
- 谁去做(填名字)——四个示例名字,改成你们组的名字即可。
选项框里已经有东西时,换模板会先弹一句确认,避免把你辛苦填的名单盖掉。
抽中后移除该项
顶部的这个开关默认关着。打开之后,转出来的那一项会从转盘上去掉,剩下的项重新分角度,下一转只在剩下的里面选。它最常用在两件事上:
- 排顺序:转一次记一个,转到最后一项,出场顺序就排完了;
- 分组:先转出第一组的人,再接着转第二组。
转到只剩最后一项时页面会提示你。点「重置」可以把被去掉的项全部找回来——重置还原的是你最近一次手动编辑或者套用模板后的那一整份选项,所以放心转。
历史
转盘下面有一个「最近 20 次结果」的折叠区,记着这次打开页面之后每一转的时间和结果,方便回头核对「刚才转到的到底是谁」。它只留在页面里,刷新就没了。
怎么看结果
指针停在哪一扇,就是哪一扇
这是这一页最要紧的一条实现约定:页面先用随机源抽出结果,再倒推出指针应该停的角度,然后才播动画。很多人担心「会不会动画归动画、结果归结果」,在这里不会——落点还会特地避开扇区的两条分界线(离边界至少留出这一扇宽度的 15%),所以转完不会出现「压线了,到底算哪个」的争执。单元测试里逐个下标核对过:两项、三项、带权重、五十项四种转盘,任意起始角度、四到七圈之内,指针停的扇区永远等于抽出来的那一项。
「怎么老是转到同一个」
短期内重复是随机的常态,不是转盘坏了。五项均等的转盘,连转三次都出同一项的概率是二十五分之一——转上二十轮,见到一次这种情况反而是正常的。人对随机的直觉天生偏向「应该轮着来」,但每一转都是独立的,上一转的结果不会让下一转避开它。真要做到「转过的不再出现」,把「抽中后移除该项」打开,那才是数学上的「不放回」。
权重要怎么设才合理
权重是相对份数,不是百分比。想让某项占一半,让它的份数等于其余各项份数之和即可:另外四项各 1 份,它就写 *4。份数越大扇区越大,这一点在画面上是一眼可验的——如果你设了权重但扇区看着没变大,多半是星号写错了位置(要写在这一行的最末尾,星号后面只能跟数字),页面的说明行也会告诉你「其中 N 项设了权重」,对不上就是没解析成功。
几个人一起用的时候
转盘比口头喊数、比手心手背更容易被接受,原因就在于过程是公开的:选项是当众填的、权重是当众设的、转动是当众发生的。用它做决定时,把规则在转之前定清楚——转几次、转中的还算不算数、要不要开「抽中后移除该项」——这比任何事后解释都管用。另外,重转一次并不会让谁更容易被选中,每一转都是独立的,这和「上一把输了下一把更容易赢」是同一个误区。
和站内另外两页的分工
- 在线抽签器:名单型的活。一次抽好几个、随机分组、排整份顺序,还能记住抽过谁,名单可以放到几百人。
- 随机数生成器:要的是数字。设范围、个数、不重复、排序、小数位,还带掷骰子和抛硬币。
- 本页:一次出一个结果,胜在看得见的过程,适合当众做选择和给选项设不等的权重。
三页底层用的是同一套随机源与拒绝取样,结果的公平性没有差别,选哪个只看交互形态。
常见问题
转盘能不能记住我上次填的选项?
能。选项原文和「抽中后移除该项」开关存在你自己浏览器的本地存储里(键名 hi8-zhuanpan-prefs),下次打开直接就是上一套。它只待在这台设备的这个浏览器里,换设备、换浏览器、清掉浏览数据都会回到默认的示例选项。转出来的历史不落盘,刷新即清。
手机上好用吗?
好用。转盘按容器宽度自适应,在 400 像素宽的屏幕上完整可见;中间的「转」按钮和选项框都做了触屏尺寸。手机上填多行选项时,用输入法的换行键分行即可;权重的星号在中文输入法下打出来是全角 *,页面同样认。
为什么不做成拖一下甩出去的那种?
甩动手感需要按拖动的速度换算角速度,在触屏和鼠标上表现差异很大,还容易出现「甩太轻转半圈就停」的尴尬。这一页把它简化成一个按钮:点一下,固定转四到七圈再缓出停下。真正决定结果的是随机源,不是你甩得多用力——这一点说清楚了,反而更让人放心。
能不能加音效、加彩带、加倒计时?
暂时没做。这一页的目标是打开就能用:进来是转盘,改两行字就能转,也不必先看一遍教程。声音在多人围观的场合反而容易添乱(有人开着外放、有人在开会),所以先不加。
转盘上的字被截断了怎么办?
两个办法:把选项改短,或者减少项数。扇区上的可写宽度是从外圈到中心那一段,项数越多扇区越窄、字号越小,能放下的字数自然越少。如果你的选项本来就长(比如一整句话),建议在转盘上只写关键词,具体内容记在别处——转盘是用来指的,不是用来读的。
原理与冷知识
-
转盘的数学其实就是「按长度取点」。 把圆周长按各项权重切成几段,在圆周上均匀取一个点,落在哪一段就是哪一项。本页的做法等价于此,只是把「取点」换成了「取份数」:因为权重都是整数,直接在总份数上取一个均匀整数更干净,也避开了浮点数在边界上的麻烦。
-
取模偏差是这类工具最常见的隐蔽 bug。 拿一个 32 位随机整数对 n 取余,当 n 不能整除 2³² 时,前面几个余数会比后面的多分到一份机会。本页用的是拒绝取样:先算出能被 n 整除的最大整份区,取样落在整份区里才算数,落进末尾零头就丢掉重取。代价只是偶尔多取一次,换来的是每一份完全等机会。
-
动画和结果谁先谁后,是个真问题。 如果先播动画再看指针落在哪,就得处理「刚好压在分界线上」的情况,还要防浮点误差把边界判歪。先定结果再倒推角度就没有这些麻烦,代价是必须保证倒推正确——所以这一页把「给定结果下标,终止角度必须落在该扇区内且离边界留出安全边距」写成了单元测试。
-
缓出曲线用的是四次方。 剩余角度按
1-(1-t)⁴收敛,也就是前半程已经走完九成多的路程,后半程几乎全在慢慢蹭。这条曲线接近真实转盘受摩擦力减速的手感——真实转盘的角速度按指数衰减,四次方缓出在观感上非常接近,计算却简单得多。 -
「相邻扇区不能同色」是个小小的着色问题。 用九种颜色循环上色,唯一会出问题的地方是首尾相接处:项数是九的倍数加一时,最后一扇和第一扇会撞色。本页的处理是把最后一扇换成一个既不同于它前一扇、也不同于第一扇的颜色。这类问题的一般形式就是图着色,而环状图只需要两三种颜色就能保证相邻不同色——九种颜色绰绰有余,用这么多只是为了好看。
-
「选择困难」是个被研究过的现象。 心理学里有一支研究讲的是选项变多之后,人反而更难下决定、决定之后也更不满意。转盘的作用不在于帮你选对,而在于把「选」这个动作从你身上挪走——很多时候你在转盘停下的那一秒就知道自己其实想要哪一个了,那才是它真正的用处。
-
转盘型的随机装置比计算机古老得多。 从古代的转轮抽签到近代的机械转盘,人类一直在用「转起来、停在哪算哪」解决分配问题。物理转盘的公平性取决于轴承、配重和摩擦是否均匀,做不好就会有系统性偏向;网页版没有机械误差,公平性完全由取样算法保证,反而是更干净的一种。
-
顶部指针的位置是有讲究的。 把指针放在 12 点钟方向、朝下指,是因为人的视线自然落在圆盘上方,且转动时上缘的角速度在视觉上最容易被跟踪。本页内部把所有角度都定义成「从 12 点起顺时针量」,画到画布上时再统一减去 90 度——画布的 0 度在 3 点钟方向,这个转换如果散落在各处,很容易在某个分支上漏掉,集中在一处就不会错。