你是一个凡人,上帝用意志创造了一副牌,你无法偷看无法修改,对于抽牌的你来说,这是一个真随机;
你是一个程序员,计算机创造了一个random函数,你无法偷看无法修改,对于使用random的你来说,这是个真随机;
你是一个抽奖用户,程序员用random函数写了一个抽奖程序,你无法偷看无法修改,但是你死活不信抽奖程序是真随机的,因为你觉得程序员的抽奖算法可能已经预设好了中奖概率,也就是所谓的伪随机。
如此说来,程序员也可以不信任计算机,random函数是计算机事先设计好的随机算法,从这个角度看,难道就没有伪随机的可能吗。
以此类推,上帝面前的这幅牌,也是通过他的意志创造出来的,你去抽牌这事的不也可能是伪随机吗?
私认为,程序员质疑计算机,‘凡人’质疑‘上帝’,简直没事找事。
但是用户质疑程序员,这似乎情有可原:因为程序员到底是用了一套动了手脚的程序(伪随机),还是使用了计算机的random函数(真随机),这种事真不好说啊,作为客户就更加无法辨别了!
怎么办呢?
对于不相信程序员,但还算相信计算机的用户,我们可以引入一个不可操控的‘种子’,比方说某时某地的气温,通过用户可验证的随机算法,生成出一个随机数出来,排除掉程序员制造伪随机的可能性,这样就能令其信服了。
但对于那些连‘上帝’也质疑的用户,那就别多费口舌了。
最后,我们想想看伪随机这种东西有没有用处呢?
还真有这种需求,真随机这东西老被用户质疑是伪随机,并非都怪用户找茬,他还真有”犯罪证据”被抓着。比方说一个抽卡游戏,抽中SSR的概率官方说是5%,结果用户抽了20次没抽到,30次还没抽到,这正常吗?正常啊!但是客户不觉得,认为这就是程序员制造“伪随机”的证据。所以呢,有时候程序员反而需要写一个伪随机算法,让用户抽20次必中1次,让用户感觉上觉得这个游戏是“真”随机。