【卡牌建模计划】先后手开局换牌与抽牌模拟
嗯这次并不是承接上文,算是接了个30只猪的私活衍生出来的一个水帖。
也就是说这个和之前的生灵身材模板是没什么关系的,但是内容也算是建模吧,就把这篇帖子也纳入进了【卡牌建模计划】,算是一个小插曲。
(原先的生灵身材模板还是会更新的,只是会鸽一些hhhh)
好了,让我们来看一下今天的正题:
先后手开局换牌与抽牌模拟。
严格来说这是一个很基础的条件概率问题,甚至说用高中的古典概型排列组合都可以非常简单的解决,当然,为了保证本次水帖的含水量,我们后续要将这个问题发散开来,让它能去计算更多的场景,解决更多的实际应用问题。
那么首先是还是模型假设方面:
1. 先后手开局换牌和抽牌遵循数学意义上的真随机,符合古典概型(也就是说能用条件概率和排列组合)。
这里我们要说明一下,计算机能实现的所有随机大概率都是伪随机,这种伪随机会根据算法生成一个随机数种子,随机数种子固定生成的随机数就固定,但是从实现的效果和统计意义来看几乎是可以等价于数学意义上的完全随机的。只要不像lol的暴击率那种,会针对于前项结果修正后项实际概率的,伪随机的数学意义就可以等价于真随机。
(扩展一下,lol的暴击率比如说是50%,你第一下没出暴击,系统会自动将你第二下攻击暴击率修正为80%或更高,以保证短周期内暴击率实际值符合理论值,类似于五行师平均三包一天,但是有五包兜底一天的应用)
2. 动画上来看起手抽牌和多张抽牌是一起的,但是实际上肯定是有先后次序的,也就是说多张抽牌可分解为多次单张抽牌的组合。
3. 开局先后手换牌与鬼谷的这种换牌略有不同,鬼谷换牌是属于换进去后可能换出来同一张牌,而开局先后手换牌不仅不会换出同一张牌,在多次换牌的时候也不会出现换进去的牌。即天宫中123不会换成123,123也不会换成412。也就是说,相比于抽牌,开局换牌只是抽牌后多了一个洗入牌库的动作(虽然动画上是反过来的),即多张换牌可以等价于多张抽牌,亦可等价于多次单张抽牌。
4. 因为核心卡数量多数情况下远少于牌库数量且一般情况下少于六张,故而我们默认先后手换牌数量分别为2和3,直接拉满。直接上手满核心卡不需要换的情况较为少见,暂时先忽略。
来看看我们今天的两个目标:
1. 求出牌库数量为n,核心卡数量为k的各情况上手至少一张核心卡的概率
2. 求出牌库数量为n,核心卡数量为k的各情况上手至少m张核心卡的概率(m<=3)
接下来我们分解一下先后手开局换牌和抽牌的过程:
1. 先手:抽牌六张+换牌两张
2. 后手:抽牌六张+换牌三张+回合自动抽牌一张
这里要说一下后手的回合自动抽牌按理说应该不属于“开局”的这个范畴,但是先手的回合没有自动抽牌,也是为了方便后续加上抽牌的计算应用所以也囊括进了开局的范畴。
那么,当一切准备工作都已经做完,之后就只剩下简单的计算了:
设牌库数量为n,核心卡数量为k,抽牌六张手中至少有一张核心卡为事件A1,先手抽牌+换牌两张手中至少有一张核心卡为事件B1,后手抽牌+换牌三张手中至少有一张核心卡为事件C1,后手抽牌+换牌三张+回合自动抽牌一张手中至少有一张核心卡为事件D1。
(这里那个抽牌其实就是开局六张)
很好,我们已经初步解决了单一核心卡的上手率的问题,已经是一道合格的高中概率题了hhhh。
那么下面,我们继续向下一个目标进发:
求出牌库数量为n,核心卡数量为k的各情况上手至少m张核心卡的概率(m<=3)。
这个目标其实就是我之前说接的私活:
这个问题其实说穿了也很简单,还是个排列组合问题,只是计算量稍微有些大。
目标一中“至少一张核心卡”是可以拆解为“一张核心卡”+“两张核心卡”+“三张核心卡”……这种多个情况概率的线性加和,所以说假设上手至少m张核心卡为事件Em,上手正好m张核心卡为事件Fm,则:
很棒,那么带入具体实际问题,我们的客户30只猪想问:
这里我们将先手+换牌+摸2近似为开局六张+后手换牌+回合抽牌(有一定误差,但误差极小可以忽略,主要是懒得再算个新的了hhhh)
代入牌库数量为40,至少上手两只,多试几次就能得出:
也就是说在40张牌的牌库中要保证有10张一费卡才能在先手+换牌+摸2的条件下保证手里有2张一费的概率在80%左右(也就是先手2升3修的那个回合)。
好了,再总结一下这两个目标的应用场景吧:
1. 目标1主要用于核心卡的开局上手率,多用于牌库数量大于等于40的时候,看满编三张核心卡的开局上手率。
2. 目标2适用范围更广一些,可以用于同定位卡的多张开局上手率,比如求牌库为40的时候,多少张一费卡能保证开局至少上手两张的概率大于固定值。
呃,好像仔细一想这俩也没什么特殊的区别,就跟泰勒公式和麦克劳林公式的关系一样。
那么本次水贴到这里基本就可以告一段落了,针对于核心卡上手率这个问题,其实还有很多可以研究的方向:
1. 多种核心卡的同时上手率问题,与目标2这种同定位的单类核心卡不一样,是求比如【平等王】和【定海神珠】一起上手的概率,能否近似于单核心卡上手率的幂的形式(人毕竟还是懒的嘛hhhh)。
2. 单核心卡特定回合前上手率的问题,不仅局限于开局,比如【百鬼夜行·稀】四修前也用不了,四修前上手就能很好克制快攻。复杂一些到如【夏侯惇】的18回合,中间可能夹杂着过牌的不同情况。
3. 开局的换牌与之后的抽牌能否统一近似为之后的抽牌形式,以方便计算。
不知不觉间好像又开了个坑……
得想想办法回头先把之前身材模板的【卡牌建模计划】给完成了。
先这样吧。