连环夺宝游戏研究
连环夺宝是中国福利彩票在线的一款博彩游戏,官方公布的回收比率是4:6。目前的山寨版集中在PC网页版和手机版。游戏画面类似三消游戏,采用的也是同色消除的规则,但玩法和三消一点关系都没有,只是借鉴三消游戏的“消除”视觉刺激,也不允许玩家移动棋子,是一款100%凭运气的游戏。
玩法简单说明
详细游戏规则,网上百度一下很多我就不再赘述。为了方便起见,我们就从第一关开始研究起。
4×4的格子(共16个), 每个格子有一盏灯,灯可以发出“橙绿黑黄蓝”5种颜色。
电源打开后,每个格子的灯各自随机发出一种光。
例如:
当某些格子形成连续的4个或4个以上的同色光时,就可以进行一次消除。
例如:下图可以实现一次黑色的4连消除
例如:下图可以实现一次蓝色的5连消除
如上图,只要某个“上下左右”位置“粘连”的同颜色的灯大于或等于4个,就可以消除。
问:
进行一次4连消除的概率是多少?
进行一次5连消除的概率是多少呢?
进行更多次消除的概率呢?
问题还可以引申:
进行两次4连消除的概率呢?
例如:下图,进行了一次橙色4连,和一次黑色4连消除,共两次
进行三次4连消除的概率呢?
例如:下图,进行了一次橙色4连,黄色4连,绿色四连,共三次
进行更多次的4连消除的概率呢?
当然还可以再问:
没有进行任何4连或4连以上的概率是多少?
自己尝试一下
问题简化,我可以先算出,至少进行1次4连的概率。
共有16格子,每格5种颜色,那么共有5^16种情况。不用啥高深的技术,我就从最简单的把所有情况一个个数出来的方式计算。
我们把问题分解:
要把所有4连的情况都列出来,我们可以先从4连有哪几种形状开始算起。
我们都玩过俄罗斯方块,只要看看俄罗斯方块有几种图形就好了:
我们只要想办法把这几种图形“置入”4×4的空格内,然后“数”出所有的情况。
1. 连续4个
我们首先开始算,第一列占有4个橙色的情况。如下图:
竖起4个
横置4个
首先我们来看竖起的,共有4种情况:
(1)
(2)
(3)
(4)
我们只要把空白处填补上其他颜色即可,只要注意橙色旁边的空白不要沾染上橙色:
(1)上图,叉叉部分不能染橙色所以只能是4^4,剩下的才是4^8,最终是4^4×4^8
(2)上图,需要避让的空白更多了,最终是4^8×5^4
(3)(4)同理,所以最终竖起的总共是2×(4^4×5^8+4^8×5^4)
竖起和横置的情况相同,所以最终连续4个总共就是4×(4^4×5^8+4^8×5^4)=563840000
2. 连续3个
同理,先分横竖,如下图:
竖起3个
横置3个
先看竖起的,各有3种形状,对应3个位置,可得:
只要数一下叉叉就可以了,最终为2×(4^4×5^8)+(4^5×5^7)+2×(4^7+5^5)+2×(4^8×5^4)+2×(4^6×5^6) =592320000
以上情况分别还有两类变种:
(1)上下位置:左上角为起点,和左下角为起点,这种情况要加上
(2)左右位置:如下图,左上角为起点向右,右上角为起点向左,所以也要加上
竖起和横置的情况相同,所以最终额外加上了3种情况,最终结果要×4。
所以最终连续3个总共就是592320000×4=2369280000
3. 连续2个
第一列只占2个,这种情况更为复杂,还要分为两种图形,分别是:
3.1. 方形
首先看方形,方形竖起和横置是一样的,故不重复计算:
最终可得4×(4^4×5^8)+4×(4^6×5^6)+(4^8×5^4)=696960000
3.2. N形
最终可得4×(4^5×5^7)+2×(4^7×5^5)=422400000
另外,还有三个变种:
(1)N形横置的情况
(2)N形水平翻转的情况
(3)N形横置并水平翻转的情况
最终有4个同样数量的变种,所以总共有422400000×4=1689600000
4. 最终结果
样本的总量为5^16
最终至少进行一次4连的概率为=(5×5675272)/(5^16)= 0.151 约为15.1%(计算器按得好累…..)
实际游戏中,还会存在多个4连、5连更多连的情况,玩家消除的概率比这个还要大。
实际应用的意义
连环夺宝实际上是一种赌博游戏,闲家和庄家进行对赌:
闲家押注给庄家。
庄家接通电源,打开所有的灯。
如果亮起的灯符合消除条件,则庄家根据赔率表赔给闲家相应的钱。
如果没有符合任何消除条件,则不赔钱。
赔率表
注:这个表内是每种颜色出现权值不一样的情况下的赔率,出现几率小当然赔率越高。
为了研究方便,我们进行了简化,每种颜色出现权值一样,则只需要研究一种情况:
上表中的橙色4连的赔率是2,意思是1块钱赔2块钱,1比2的关系,那么只有橙色4连出现的概率等于50%,那么这个游戏是公平的。但我们通过之前的计算,橙色4连的几率远没有达到50%。
当然作为庄家,肯定不会设计让自己赔钱的游戏,所以橙色4连出现的概率必定小于50%,那么玩家遇到橙色4连,庄家赔付肯定不只2元,这多出来的钱就是庄家的盈利。
但是真实的橙色4连概率到底是多少呢?庄家到底盈利多少呢?
问题再引申开来,不止有4连,还有5连、6连、7等等更多的情况,实际上庄家只需要关注一个:
玩家没有进行任何消除的概率是多少?
进而获得:
玩家可以进行消除的概率是多少?同时获得期望值。只要这个期望值小于玩家的押注(假设1块钱),庄家就可以一直盈利。
问:
这个期望值能够算出来吗,如果可以,那我们想知道,这个游戏下,每一局庄家赢得的期望金额是多少?
解决方案
理论上来说,每种情况都可以算出相应的概率,但计算量太大,而且还有第二关(5×5)、第三关(6×6)的情况,才能真正对游戏的收支有掌控力。但是,这不现实也没有必要,最后还是需要祭出“奖池法”。
奖池法相信大家都熟悉,什么水果机、奔驰宝马,相信大家肯定玩得一溜一溜,我就不再赘述了。对这方面不太了解的朋友,也可以参考之前我写过的水果机做法的文章。
如果是用奖池法,那就遇到一个问题,如何将红利返还给玩家,也就是如何让玩家“中奖”呢。因为这个游戏类似三消,消除了才能给钱,我要如何“定制”消除的量呢,准确地进行“分红”呢?
第一种方法,简单一点,事先做好几个预设的图形,等到要发放时,让服务端照着“画”一个出来就可以。缺点就是事先预设的工作量比较大,时间长了容易重复被看出规律。
第二种方法,采用“随机”定制图形,具体思路就是先确定消除的方案,然后“嵌入”图形,把其他灯打乱(需要用一定的算法扼制多连的情况),然后将其展示给玩家,装模作样地消除一下即可。
如何分红
随机定制图形,重点就是服务端如何生成我们需要的图形。这里我提供一个方法,略显复杂,大家可以有选择地去用。各位策划可以将这个方法讲给程序听,帮助他们开拓思路。
例如,在第一关,此次可以分红到1000点,玩家选择使用单线10点继续游戏,则就需要服务器配置形成100点的宝石阵列,根据下列规则生成。
1.1 确定消除点数
遍历奖励表,可以发现低于或等于100点的组合有23种组合
从该组合中,随机挑选一个组合,如果该组合小于该组合的点数,则继续挑选剩下的组合,直到所有组合满足需要的点数。
比如:
第一次随机挑选到了“玛瑙5连”的组合,则还需要100-30=70点,则继续在70点以下挑选。
第二次随机挑选到了“黑玉7连”,则还需要70-40=30点,第三次挑选到了“碧玉8连”组合,则30-30=0点,刚好。
所以,此次需要进行的消除项为“玛瑙5连”1次、“黑玉7连”1次、“碧玉8连”1次,共3次消除。
1.2 确定消除次数
根据消除的组合数,随机确定当前需要用几次消除,一般情况下为:
消除次数 = 组合数 – RND(0,1)
消除次数最小为1,最大为5
例如,需要消除3组,则需要进行3次或2次消除。
1.3 打乱顺序
第一次消除:“玛瑙5连”
第二次消除:“黑玉7连”
第三次消除:“碧玉8连”
1.4 生成第一次消除
随机生成“玛瑙5连”
其他位置,随机填入无关的数字,并标记
1.5 移除第一次消除
将玛瑙从矩阵中移除,数字落下并填补空位,整理后:
1.6 进行第二次消除
随机生成“黑玉7连”:
此次生成错误,如果标记数字的空格上生成的连续黑玉大于或等于4(或5或6),则再进行一次随机,直到生成符合要求的格子:
其他位置,随机填入无关的数字,并标记
1.7 移除第二次消除
将玛瑙从矩阵中移除,数字落下并填补空位,整理后:
1.8 生成第三次消除
随机生成“碧玉8连”。注意,依然要能大于或等于4(或5或6)的原则:
1.9 完成矩阵地图
第一次和第二次消除结合,完成矩阵地图:
再和第三次消除结合,获得最终的矩阵地图:
去除数字标记,将其他位置填充入无关的颜色:
1.10 放置钻头
完成矩阵地图后,在下方4X4格子内,随机位置放入钻头,其余的宝石位置上移一格
以上就是最终完成的图形,服务器生成好并校验完成后,发给客户端即可。