我做了一个随机转盘,给那些小决定省点时间
我做了一个随机转盘,给那些小决定省点时间
有时候,做一个决定花掉的时间,比事情本身还长。
中午吃什么,周末玩什么游戏,几个人一起活动谁先开始。这些问题没有那么重要,通常也没有一个绝对正确的答案。但只要有几个选项摆在面前,就可能需要商量一会儿。
如果每个选项都可以接受,其实没有必要一直比较下去。随机选一个,事情就能继续了。
这也是我做随机转盘的出发点。
最开始的想法很简单:把几个选项写进转盘,按一下开始,等指针停下来,得到一个结果。没有账号、复杂的设置,也不需要下载安装软件。
这个页面就是我做的随机转盘,后来把它放在了 WheelPage 网站里。
让一个转盘转起来,并不等于做好了
一个圆,分成几个扇区,填上文字,再加一段旋转动画。只看画面,随机转盘似乎没有多少复杂的地方。
但选项是用户自己输入的,情况就不一样了。
只有三个选项时,每个扇区都有足够的空间。增加到十几个以后,文字可能变得拥挤。有的选项只有两个字,有的却是一整句话。如果全部按照相同的方式显示,转盘就可能出现文字重叠、字号过小的问题。
选项的增删也会影响整个画面。用户删掉一个选项,扇区数量要变化;修改文字,显示内容要更新;重新排序以后,结果和转盘上的选项还得保持对应。
移动端也有自己的问题。电脑屏幕足够大,转盘和选项列表可以同时展示。到了手机上,输入框、转盘、操作按钮都要占据有限的空间。
这些事情不会让随机转盘多出一种玩法,却会影响使用者愿不愿意继续使用。
我也花了时间处理动画。转盘开始旋转以后,速度要变化,最后要停下来。指针停在哪个位置,页面就应该显示对应的选项。
对使用者来说,这只是一次转动。对程序来说,却需要让随机选择、转盘位置和最终显示保持一致。
如果指针指向了 A,结果区域却显示 B,即使随机算法本身没有问题,使用者也很难相信这个结果。
随机选择,也需要把规则讲清楚
做转盘时,还有一个不能忽略的问题:什么才算公平?
假设转盘里有五个人的名字,每个人占一个相同大小的扇区。我们希望每个人都有相同的机会被选中。
这听起来没有争议。但如果其中一个名字出现了两次,或者某个选项拥有不同的权重,结果的概率就会发生变化。
因此,随机选择是否公平,不能只看转盘转得够不够自然,还要看选项是怎么设置的、结果是怎么产生的。
尤其是抽签和随机点名,如果有多人参与,我觉得最好先让大家确认名单,再开始抽取。
有时候真正引起争议的并不是抽到了谁,而是抽取前有没有把规则说清楚。
而且,随机不代表结果一定会平均出现。
比如连续抛几次硬币,出现三次正面,并不能说明下一次就应该是反面。转盘也是一样。如果每次都是独立抽取,即使某个选项连续出现,也不一定代表程序出了问题。
很多人会把随机理解为“看起来分布得很均匀”,但这两件事并不完全相同。
如果活动要求每个名字只能被抽中一次,就需要采用不重复抽取的规则,而不是指望随机结果自己避开之前的名字。
这些问题比转盘的外观更值得提前想清楚。
结果出来以后,还是想重新转一次
我觉得随机转盘还有一个有趣的地方。
比如在三个备选方案中抽到了 A,可看到结果以后,心里却希望是 B。
这种情况并不罕见。
随机结果已经出来了,人却未必愿意接受。甚至可能再转一次,直到得到自己想要的结果。
这不一定是转盘没有发挥作用。
如果一次随机选择让人发现自己更喜欢另一个选项,至少说明原本模糊的偏好变得清楚了一些。
当然,这种方法只适合不太重要的决定。选一家餐厅、挑一个游戏、决定活动顺序,用随机方式没有什么问题。但涉及健康、金钱、安全或者重要的人生选择时,就不能把责任交给一次转盘。
工具给出结果,并不意味着人必须接受。
为什么后来又做了其他小工具?
随机转盘完成以后,我又做了几个用途接近的页面。
比如只有两个选项时,用抛硬币就够了;如果需要随机点数,也可以使用在线骰子。
它们的操作方式不同,却都在解决一些具体的小问题。
我没有打算把所有随机玩法都塞进同一个页面。有时候需要的是一个可以编辑名单的转盘,有时候只是一个正面或反面的结果。
如果一个工具只需要完成一件事,就没有必要让它承担太多功能。
现在 WheelPage 已经增加了其他工具,但随机转盘还是最初那个想法的延续:让用户自己填写选项,完成一次选择。
网站还在维护,转盘的显示效果、手机操作和一些细节也有继续调整的空间。
对我来说,这些功能谈不上什么特别大的创新。随机转盘早就有人做过,抛硬币和骰子也不是新玩法。
我能做的,就是把自己想用的功能做好,发现问题再调整。
如果一个人需要随机抽签,打开页面,输入名字,转一下就能得到结果,不必研究一堆操作说明,这件事就已经有了实际用途。
至于最后抽中了什么,就交给运气吧。