老实说,现如今一番街的公开牌山生成代码完全就是为了恶心猫粮,包括天凤的公开也毫无意义。谁能确定你一番街实际上使用的就是这套代码呢?又如何保证种子是随机的?官方完全可以自动化设计大量配牌和早巡进张有偏向的开局。所以目前不管是猫粮还是一番街,仅能保证对局中不篡改牌山而已。
当然,这个帖子的目的不是跟那些又菜又倒霉的人共情,而是从算法的角度探讨如何确保牌山生成的绝对公平:
1. 制作一个牌山生成的网页:
就是一个简单的前端页面,输入明文种子,即可依据现有公开的随机算法生成对应的一套牌山。
2. 多方参与生成私密随机种子:
每个参与方(即四个玩家和官方)在开局时,各自选择提交一个随机数,所有随机数通过组合运算(例如XOR)生成最终的随机种子。每一方的选择都会彻底改变结果,这是你的自由意志决定的,所以随机得不能再随机了。
> 注:不必每局都要求玩家选择随机数,可以在匹配成功后仅对每位玩家询问一次,不会影响玩家体验。开局利用这个父种子通过另一个公开的随机算法生成一百套子种子(牌山),就足够使用了。
3. 公开随机种子的哈希值:
游戏开始前,将生成的随机种子的哈希值公开,确保种子在游戏进行中保密,牌山无法被玩家预测。公布哈希值可以让所有参与者提前知道有一个既定的种子存在,但不会暴露具体内容。
4. 生成发牌顺序:
服务器使用私密随机种子和牌山生成算法计算出牌山。
5. 游戏结束后验证:
游戏结束时,各方揭示各自选择的随机数和牌山生成种子。每个玩家都可以通过组合生成算法验证种子的随机性,并使用得到的种子和公开的生成算法验证发牌顺序的一致性。
总结:
相比现有仅在对局中提供牌山的SHA-256的方法,上述方法通过多方参与生成随机种子、公开种子的哈希值以及在游戏结束后揭示所有参与方的随机数,确保了随机种子的真实性和不可预测性,进而保证了牌山的随机性,从而彻底堵住了配牌质疑。
当然,这个帖子的目的不是跟那些又菜又倒霉的人共情,而是从算法的角度探讨如何确保牌山生成的绝对公平:
1. 制作一个牌山生成的网页:
就是一个简单的前端页面,输入明文种子,即可依据现有公开的随机算法生成对应的一套牌山。
2. 多方参与生成私密随机种子:
每个参与方(即四个玩家和官方)在开局时,各自选择提交一个随机数,所有随机数通过组合运算(例如XOR)生成最终的随机种子。每一方的选择都会彻底改变结果,这是你的自由意志决定的,所以随机得不能再随机了。
> 注:不必每局都要求玩家选择随机数,可以在匹配成功后仅对每位玩家询问一次,不会影响玩家体验。开局利用这个父种子通过另一个公开的随机算法生成一百套子种子(牌山),就足够使用了。
3. 公开随机种子的哈希值:
游戏开始前,将生成的随机种子的哈希值公开,确保种子在游戏进行中保密,牌山无法被玩家预测。公布哈希值可以让所有参与者提前知道有一个既定的种子存在,但不会暴露具体内容。
4. 生成发牌顺序:
服务器使用私密随机种子和牌山生成算法计算出牌山。
5. 游戏结束后验证:
游戏结束时,各方揭示各自选择的随机数和牌山生成种子。每个玩家都可以通过组合生成算法验证种子的随机性,并使用得到的种子和公开的生成算法验证发牌顺序的一致性。
总结:
相比现有仅在对局中提供牌山的SHA-256的方法,上述方法通过多方参与生成随机种子、公开种子的哈希值以及在游戏结束后揭示所有参与方的随机数,确保了随机种子的真实性和不可预测性,进而保证了牌山的随机性,从而彻底堵住了配牌质疑。