赌神之路——猜拳的策略
昨天已经开源的小智机器人的代码,那是一个通用的模块化摸鱼派聊天室机器人。里面有封装好的所有鱼排 API,可以直接便捷的调用。
那么今天就来详解小智的猜拳算法实现,为何从表面上看小智的胜率似乎很高(虽然最后输光了)。
源起
做小智猜拳机器人只是一时的兴起,想起了大学看到的一篇论文,标题已经不记得了,但里面有一个博弈论实验,使用猜拳作为媒介,探索猜拳的制胜策略。最终,在他们不断的实验中发现,单人之间的三局两胜对战,制胜策略十分简单:
输则改之,赢则加勉
也就是如果你前一局输了,那么就修改出拳,如果你上一局赢了,那么就继续相同的出拳。
实验
基于此,就想着做一个猜拳机器人,验证一下想法。结果很明显,这种用于三局两胜制的策略,在聊天室这种连续对战的局面下,很容易就被看出规律,最终反制。
因此,在此基础上,我又加了一层,如果最后一次出拳和倒数第三次出拳相同,那么就会认为你会出和倒数第二次出拳一样的拳。[1]同时秉承小赌怡情,大赌伤身的思想,调低了小智的开包限额。
最终,在重新调高限额前,小智的积分从第二次更新充值的 1000 积分,来到了 24449 。这里面有部分是跟抢非猜拳红包获得的积分。那么根据记录的赌狗记录
,最终,小智共猜拳 1401 次,赢了500次,平了480次,输了 421 次,胜率 36%。如果除去无情的凌的对战。猜拳 636 次,赢了 254 次,平了 232 次,输了 150 次,胜率 40%。基本上都超过了概率学上的随机出拳概率。
结局
最后,小智在调高限额后,输到剩下 5 积分和第一版本的原因完全是一样的,就是被摸透了规律,@xiong 在长期与小智对战中摸透了小智的出拳规律,然后在开放限额当天,指导@ClearLove7 与小智对战。[2](从此处往后看)
这就是结局了吗?当然不是,第二版的改动就是在第一版本的一维的数据依据上再加多了一个维度的历史判断,这便已经足矣唬住大家如此长的时间(不知道@xiong 是啥时候找出规律的),那么如果把这个维度再往上叠加了,最后就可以超越人力所能摸索规律的极限,由此成就真正的赌神!
P.S. 打赏区是所有小智猜拳的用户胜率表。
[1] 机器人猜拳策略代码:https://github.com/imlinhanchao/fishpi-robot/blob/master/lib/guess.ts#L24
[2] 小智最终翻车现场:https://fishpi.cn/cr?oId=1683801147779#chatroom1683801189822
所以如果赌神简单判断连续输给某个人N把之后就改用随机策略M把的话,就可以防猜了吧
要不要再试试?
在我见到律师前我是什么都不会说的