我是进行病K测试的作者,不知道是什么的可以看我的上个帖子。 在上个帖子里,我犯了两个错误,一个是第77条数据输入错误,把0输入成了9(因为键盘上0和9挨得近,手滑打错了),所以实际上抽到了92张疫病,而不是101张,这个应该有不少人发现了。 但其实另一个问题远比这个严重,那就是舍去对手死亡的数据,这可以说严重影响了数据的客观性。 大家应该都知道,炉石某次补丁修改了死亡结算,疫病也一样,在对手病死的那一刻游戏就结束了,不会继续抽牌,所以对手抽死时,我不知道后面还有没有疫病,有几张疫病,所以我在上个帖子的想法是舍去对手抽死时的那一条数据,只保留对手存活时的数据。这个想法很自然,但其实是一个典型的“幸存者偏差”错误。 如果只把“对手没死”的抽牌当作有效记录,就会引入幸存者偏差。逻辑是这样的: 设牌库里疫病数为S,当对方血量<2S-1时,显然对手有被抽死并且无法计数的风险(如果刚好抽到最后一张疫病时死亡,依然是有效数据)。而这时,我的做法只保留了没抽死时(抽到较少疫病,即低K值)的情况,但如果对手死亡(抽到较多疫病,即高K值),这次抽牌事件就会被我排除在记录之外。结果是,我的数据会系统性地漏掉那些本应产生高 K 值的观测,导致收集到的 K 整体偏低。用这种“忽略部分高K值”的数据去和理论分布比较,会得出“实际触发次数显著少于理论值”的错误结论,即便游戏机制完全正常。这就是一个典型的“幸存者偏差”错误。 所以解决方法是:让对手保持高血量的同时,控制洗入牌库的疫病数,使得对手血量≥2S-1,一旦对手血量<2S-1,立刻停止观测和记录。 为了一局游戏能收集到足够多的数据,我携带了两张小动物来给旅店老板提供持续的回血,同时保证自己洗入的疫病在10张左右(这样旅店老板只需保持20+血量即可),我选的对手是战士,每回合有技能的两点甲,再加上两张小动物,基本上能保证对手的血量符合要求。 解释完毕,如果有疑问的可以在评论区提出。 以下是新数据,测试了10局,共213条数据,理论上应抽到约208张疫病,实际抽到215张。【图片】【图片】






换一换 





























