回推文
虽然目前多数电脑只能产生伪随机,但几乎所有的网络游戏都能产生真正的随机。
或是对玩家而言真正的随机。
原因不外乎于你无法控制所有玩家;或控制所有玩家没有意义。
以下举两个例子。
第一个简单的例子是有第三方的情况,像是天凤之类的网络麻将:
假设麻将桌上有玩家A、B、C、D,server要产生下一张摸牌,
这时它会要求所有client产生乱数。
玩家A产生了a,玩家B产生了b,玩家C产生了c,玩家D产生了d。
然后server再用a、b、c、d产生最后的乱数e=f(a,b,c,d),并用e决定摸牌。
这样就算各别玩家能控制产生的乱数甚至知道f也没意义,
因为"其他玩家"是真正随机要素。除非你能掌握ABCD四人,但这样对局也失去意义了。
另一种情况是没有公正的第三方,基本如上,只是要多了加密。
像是玩家互连的小游戏,或是冲装之类的(client与server的对战)。
假设有玩家A、B,需要随机产生一个数字,则简易流程如下:
A → a → fa fb b → fb
产生乱数 加密 ╳交换密文 ╳交换明文 验证 → 最终乱数 a+b
B → b → fb fa a → fa