转盘真的是随机的吗?

是的。这个问题被问得太多,我们干脆做了一整个页面来展示。下面你可以拿自己首页的转盘,转上一百万次,看看结果落在哪里。

0

已转动次数

·

与公平的最大偏差

点开始,看看公平的转盘究竟是什么样子。

为什么公平的转盘会显得被做了手脚

任何一个公平的转盘转二十次,看上去都像坏了。下面是我们真实转动的八选项转盘:转了二十次之后,运气最好的选项出现了 4 次,最差的只出现 1 次。

它一点问题也没有。只是转动次数还不够多。继续转下去,同一个转盘、同一段代码,会自己变均匀。

20 次转动

相差 120%

500 次转动

相差 40%

20,000 次转动

相差 8.4%

1,000,000 次转动

相差 0.5%

每根柱子是一个选项,虚线是平均分配。转动次数少时,柱子会在这条线上下乱跳;次数多了,就会紧贴着它。

我们检验了什么

最近一次运行 2026-09-08

五项检验,每项都是数百万次转动,跑的是你的转盘正在用的同一段代码。每一项都在问转盘可能不公平的一种不同方式。

12 个等分选项 通过

每个选项是否有十二分之一的胜率?

每个选项都在自己份额的 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% 之间的位置,因此它永远不会正好停在边界上。

现在去转一个吧。

免费,不用注册,而且你刚刚亲眼看它证明了自己。

创建你的转盘