老铁,你今天赢钱了吗?大数据分析博彩游戏的服务端算法。

背景是某天忽然收到朋友的信息,说最近迷上了某款博彩游戏,相似于大街小巷的水果机,说我是IT人士,赶忙帮忙写个外挂你们赚点钱。算法

一开始我嗤之以鼻,我认为这种看脸的几率问题不必浪费时间,但朋友说和通常的水果机不一样,死缠烂打非让我研究下,因而只能勉强答应了。日志

根据连接下载了游戏,是客户端游戏,虽然也是水果机,但的确有点不一样,小店里的水果机是1对1的关系,而这个是多对1,一个房间内有N个玩家同时玩,下面是这个水果机的大概玩法:blog

其中8个选项就是咱们下注的8个项,排序

总额:表示该游戏房间内例若有100个玩家,这100个玩家全部押注选项1的总额是多少,游戏

倍率:例如我压了100分选项3,那么开奖开的是选项3,我就获得8000分。下载

 

 

总所周知庄家(游戏公司)确定是稳赚不亏的,因此咱们只能从别的玩家手中赚钱,下面开始截取封包并记录数据,冒泡递减排序:程序

选项后面括号内的数字是倍率,括号后面带小数的数字是该选项押注总额,单位是万。im

 

通过几天24小时不间断的抓取,咱们有了必定数量的样本, 写个简单的统计算法开始分析:统计

果真不出所料,庄家为了保障利益,尽可能会选择总额低的开,实际上其余的能够不用看,就看乘以倍率以后的名次关于开奖的几率分布就好了,数据

因而咱们再自动控制键盘鼠标,同时抓数据,由于下注总额是实时的,在开奖前一秒按照咱们统计的几率去下注就好了,

假如此次倍率最低为4倍 ,那么咱们能够押几率最高的4个,中奖率高达73%,

若是最低为6倍,那么咱们能够押几率最高的6个,中奖率高达90%!并且即便开奖的是最低倍,咱们也不会亏。

 

因而我就开着程序一直挂着,不断的中奖,分数也愈来愈高,抱着明天坐等收钱的心态就去睡觉了,挂一晚上看看到底能赚多少。

。。。然而仍是太天真了,次日起来一看,分数原地踏步,立马看了下日志,原来如此,先让你赢点,而后就会输,输多了再让你赢,幅度控制在20%左右,也就是最多赢120%,就会让你输。

按照统计的客观开奖几率,为何会出现这种状况呢,很不科学,我开始从新审视算法,也在思考是否是忽略了什么,直到无心中看到了日志中封包数据。

重点就是游戏房间内好像有几百人,好像不少人玩不少人赢钱的样子,说话的就那么三五我的,其余人无论输赢从不说话?一直24小时所有在线?无论任什么时候间段押注全是秒押?其实全是机器人!

也就是系统生成的玩家,他们的存在一方面是充门面吸引玩家,最重要的目的是帮助系统下注,混淆押注总额,因此截取封包数据保存的样本全是假的!

你根本没法获取真实玩家的押注总额,那么服务端就能够根据真实的下注状况来选择让少部分人赢,大部分人输,甚至能够根据不一样的玩家发送不一样的开奖结果。

核心思路应该是

int UserScore=User.Score;

……

if(UserScore*1.2>User.Score)

{

  必输!

}

 

老铁,回头是岸,悬崖勒马。

相关文章
相关标签/搜索