松坂砂糖 (@MatsuzakaSato) 在 如何设计一个可信的抽奖系统 中发帖
两个月前,我们和一些开发者在广州进行了一次面基,那天我有人提出了这么一个问题,让我印象深刻——
如何设计一个真正可信的楼层抽奖系统
所谓可信,就是能够让公众确信,这个抽奖结果是可信的,而不是被任何人所伪造,以使得结果利于自己。
你作弊没有不重要,让别人(一群无所不用其极的杠精)确信你没作弊很重要
——沃兹基硕德
真随机数?
或许大家第一个想到的是真随机,然而,真随机是最不靠谱的办法。因为真随机没有可复现性,任何人都可以质疑你的真随机数是否为自己挑选出来的,而你也没有任何方法为自己辩解。
基于随机数种子的伪随机数?
伪随机数似乎是一个不错的选择,提供seed就可复现,目前的随机数算法熵值足够大,能够在做到可复现的同时提供充足的随机性,吗?
那我就要问了,你怎么证明这个种子的合理性?这个种子是不是你特意挑选,以控制随机数结果的?
@neo 的代码似乎提供了一个不错的方法...