转盘真的是随机的吗?
是的。这个问题被问得太多,我们干脆做了一整个页面来展示。下面你可以拿自己首页的转盘,转上一百万次,看看结果落在哪里。
0
已转动次数
·
与公平的最大偏差
点开始,看看公平的转盘究竟是什么样子。
为什么公平的转盘会显得被做了手脚
任何一个公平的转盘转二十次,看上去都像坏了。下面是我们真实转动的八选项转盘:转了二十次之后,运气最好的选项出现了 4 次,最差的只出现 1 次。
它一点问题也没有。只是转动次数还不够多。继续转下去,同一个转盘、同一段代码,会自己变均匀。
相差 120%
相差 40%
相差 8.4%
相差 0.5%
每根柱子是一个选项,虚线是平均分配。转动次数少时,柱子会在这条线上下乱跳;次数多了,就会紧贴着它。
我们检验了什么
最近一次运行 2026-09-08五项检验,每项都是数百万次转动,跑的是你的转盘正在用的同一段代码。每一项都在问转盘可能不公平的一种不同方式。
每个选项是否有十二分之一的胜率?
每个选项都在自己份额的 0.18% 以内
只有两个选项时,会不会有一边悄悄领先?
10 百万次转动中为 50.0% / 50.0%
权重为 1、2、3、4 时,是否按这个比例获胜?
10 百万次转动中为 10.0% / 20.0% / 30.0% / 40.0%
指针是否偏爱获胜扇区的某一部分?
每个选项都在自己份额的 0.28% 以内
上一次的获胜者是否透露了下一次的信息?
在 5 百万次转动中没有发现规律
这样的检验只能证伪,永远不能证明。通过的意思是:我们针对五种具体的不公平去找,没有找到。
获胜者是怎么选出来的
你一按下转动,浏览器就用保护密码和支付的同一套系统生成一个随机数。这个数字选出获胜者。
这发生在转盘开始转动之前。你看到的只是转盘走向一个已经定下的结果,所以点击的力度、位置和按住的时间都不会有任何影响。
const randomValues = new Uint32Array(2)
crypto.getRandomValues(randomValues)
const prizeNumber = selectWeightedIndex(
props.segments,
randomValues[0] / 0xFFFFFFFF
)具体来说:每次转动会从 crypto.getRandomValues 取两个 32 位数字。第一个沿累加权重走一遍,选出获胜选项。第二个把指针放在获胜扇区 10% 到 90% 之间的位置,因此它永远不会正好停在边界上。
现在去转一个吧。
免费,不用注册,而且你刚刚亲眼看它证明了自己。