随机决定器是一个纯前端的小工具,把「中午吃什么」「周末去哪玩」这类纠结交给随机数。你在输入框里每行写一个选项,点一下按钮,它就从里面等概率抽一个出来,还配老虎机滚动动画和纸屑特效。比如周五下午同事群里吵了十分钟没定下聚餐地点,你把「火锅、烧烤、日料、川菜、披萨」五行粘进去,一秒出结果,谁也别再争。它不联网、不上传,选项只存在你自己的浏览器里,关掉页面就没了。适合选择困难、需要公平抽签、或者想给朋友聚会加个仪式感的场合。
| 对比维度 | 本工具 | 手工/替代做法 |
|---|---|---|
| 出结果耗时 | 点击后约1.5秒动画结束出结果 | 掷骰子约2秒,抓阄写纸条约30秒到1分钟 |
| 选项数量上限 | 建议50个以内,超过200行会卡顿 | 抓阄受纸条大小限制,一般不超过20个 |
| 概率公平性 | 每个选项严格1/n,n为有效行数 | 掷骰子6面只能对应6个选项,抓阄易因纸条折叠不均被摸出 |
| 可复现性 | 每次独立随机,不记录历史 | 抓阄纸条可保留,但下次要重新做一套 |
| 隐私 | 纯本地计算,选项不上传服务器 | 纸条留在桌上,可能被旁人看到内容 |
一样。假设你填了n个选项,每个被选中的理论概率是1/n。填5个就是各20%,填10个就是各10%。实现上用的是浏览器内置的Math.random(),它返回[0,1)区间的伪随机浮点数,再乘以n取整映射到选项下标,所以不会因为选项文字长短或排列顺序而偏心。
不可预测,但也不是密码学安全级别。Math.random()属于伪随机数生成器,种子由浏览器运行时决定,普通使用足够公平;如果你要做抽奖发奖这类涉及利益的场景,建议改用crypto.getRandomValues(),它基于操作系统熵源,本工具未采用该接口。
没有硬性上限,但实测超过200行时输入框滚动和动画会变卡,建议控制在50个以内。另外空行会被自动忽略,如果你粘贴的文本里混了空格行,不会占用选项名额,也不会拉低其他选项的中选概率。
不会。所有选项和结果只存在于当前页面的内存里,刷新或关闭标签页就清空,浏览器localStorage也没写入。这意味着你换台电脑、换个浏览器都看不到上次的选项,需要自己提前把清单存在记事本里。
不影响。动画只是视觉包装,真正的随机数在点击按钮的瞬间就已经算好了,滚动约1.5秒后停在哪一格是照着结果演的。所以就算你中途切到别的标签页、动画被浏览器降帧,最终显示的结果也不会变。
适用范围:日常选择、聚会游戏、课堂点名等非利益场景。精度说明:使用Math.random()伪随机,非密码学安全,不适用于抽奖发奖、加密密钥等场景。隐私说明:所有选项和随机过程都在你的浏览器本地完成,不发送任何网络请求,关闭页面即清除,服务器端无日志。