“世界杯”的清结算模型
最近世界杯火热进行中,经过第一轮小组赛以后各组积分排名已经出炉了,你喜欢的球队积分结果还满意么?
阿根廷和德国首轮爆冷,他们还有机会出线么?在什么情况下才能出线呢?作为球迷的我们,是不是总是在不断地为喜欢的球队计算接下来的出线机会!
我喜欢阿根廷,我也在不断地分析还有没有机会出线,要想出线后两场必须如何,其他球队需要比出什么样的结果,所以能否出线不仅看自己还要看其他球队间的情况
为了可以根据比赛进程快速分析一个球队的出线前景,我设计了一套“清结算模型”,并附上基于该模型得出的“世界杯小组赛比赛出线情况速查表”,可以根据当前比赛结果,快速得出后续比赛的可能情况
场景分析
在设计清结算模型以前先分析业务场景,对于世界杯来说,分析小组出线,我们只需要分析一个小组即可,每个小组情况相同
小组赛每组有4个球队,两两进行比赛,所以每个小组一共有6场比赛
根据比赛结果计算小组赛每组球队的总积分,前两名出线进入淘汰赛,淘汰赛一局定输赢,必须分出输赢,所以不在我们的分析范围内
通过以上场景分析,清结算要做的事情就是“根据每场比赛结算,计算每组的积分,最后汇总全部结果,得出每个组的总积分”,看起来模型并不需要太复杂
其中,比赛结果分“胜、负、平”三种情况;积分规则是“胜者得3分,平者得1分,负者得0分”,因为每个球队要比赛三场,所以最后一个球队的总积分就是3场积分的总和
我们从以下几个维度分析和设计
定义比赛编码
在业务层,我们将一场比赛结束定义成一个会计事件,事件发生以后开始进行双方球队的积分计算
所以,一个小组当中一共会有6次会计事件,分别定义为“AB、AC、AD、BC、CD”
将这6次事件分配6个符号“a、b、c、d、e、f ”
每个会计事件的枚举值为“3、2、1 ”
小组赛比赛结果模型
对于一个小组全部6场比赛结束以后,那么全部6个会计事件就发生了,结果也就唯一了,对于一个唯一的结果,就只有一种积分排名结果
所以,将6场比赛的6次会计事件定义为一个小组的“会计事件组”
会计事件组为“abcdef”,会计事件组的值为“一组6位数编号”,例如“333333”代表第一场A胜B负,第二场A胜C负,以此类推
因为每个位数上有“3、1、0”三种情况,所以,一个小组的全部会计事件组一共有3x3x3x3x3x3种,即729种情况
积分计算模型
每场比赛需要计算2个球队的积分,相当于一个会计事件会有2笔计费明细,一个会计事件组会有12笔计费明细,分别计入4个球队的积分账户中
小组实时积分表
根据上面的模型,做成一个Excel表格,枚举出全部的会计事件以及会计事件组,清分明细,积分结果,以A球队做为分析球队,A球队在每个会计事件组的出线情况
如何使用这个表,首先以你要分析的球队作为A球队,将当前的比赛结果通过筛选得出还存在的全部可能,在全部可能中看A球队的出线情况有多少中
(1)分析1
赛况:你喜欢的球队连输了2场,胜了A的1个球队跟还没跟A比的球队打输了,此时,你喜欢的球队还有出线的可能么,哪种情况可以出线?
我们将会计事件AB、AC都筛选为“0”,将会计事件BD筛选为“0”,得出以下结果
从表中我们发现,A出线的概率极其渺茫,要看AD、BC、CD三场比赛的结果,也就是会计事件必须是“003003”才可有机会出现,还需要对比A、B、D的净胜球......
(2)分析2
“三场都平了,还有机会出线么?”
会计事件就是“111xxx”,我们筛选后得到如下结果
看得出来,还是有很大希望出线的!!!所以不到最后一刻,一切都有可能
(3)阿根廷出线前景
目前阿根廷所在的C组积分情况