蜘蛛牌游戏 游戏蜘蛛纸牌( 二 )


一旦最初的十张牌都确定下来,我们就能计算出 “保证轮数 ( turns,GT)”,即玩家在被迫更换至另一排之前能够确定亮出的牌的最少数目 。无论何时,当新的一排的十张牌已经确定下来后,我们都可以做一个类似的计算,假装它是新的一局 游戏 的开始 。这样一来我们就可以计算出GT的平均值(AGT)。如果几轮下来GT的值很小,那么玩家就要有麻烦了。要说明的是AGT和玩家本身无关,所以很容易通过进行很多次实验(即确定很多排)来模拟出AGT的概率分布 。
经验来谈,如果卡牌的整体分布比较糟糕的时候,玩家同样会陷入麻烦。比如说有七张Q但是只有两张J没有打出来的时候,即使你有一列或者多列已经清空,仍然会有问题出现 。因此在这里定义一个 整体方差(total,TSV) ,取值为相邻大小的牌的数目的负的平方之和 。在刚才的例子里,七张 Q 和两张 J 在求和时会贡献出 -(7-2) 2 =-25 一项 。这里取负值是为了确保 TSV 的增减性与获胜概率的增减性一致,就和AGT一样 。每亮出一张新牌我们就计算一下TSV,这样我们可以算出来单局 游戏 的 平均TSV(ATSV)。要提起注意的是ATSV同样与玩家无关,我们假定玩 游戏 的玩家会按照一个随机顺序把所有扣着的牌都亮出来(尽管玩家可以选择先亮哪张牌,但是亮出的每张牌概率是一样的) 。幸运的是这一点可以通过模拟很容易就做到 。
蜘蛛纸牌的典型散点图(○=获胜,×=落败)
一个典型的散点图如上图,这里蓝色圆圈和红色叉叉依次表示获胜和落败 。
【蜘蛛牌游戏游戏蜘蛛纸牌】模拟结果显示对于没有偏袒的 游戏 程序而言,在大量局数的 游戏 之后,AGT应该等于3.96而ATSV应该等于-32.29 。在下面这个示例的起始位置中,GT=1,TSV=-42,因为这局 游戏 还没结束,我们还不知道AGT和ATSV的值是多少 。
示例,起始位置GT=1,TSV=-42
计算如下:
假设检验

蜘蛛牌游戏  游戏蜘蛛纸牌

文章插图
为了检验一个蜘蛛纸牌 游戏 是不是有偏向性,我们采用一种叫 假设检验 的手段 。我们 先制定一个零假设(意思就是我们怀疑的效应可能不存在),在我们这里是指“蜘蛛纸牌程序并不存在偏向性”,那互补的假设就是“蜘蛛纸牌程序故意使绊子使得玩家的胜率下降” 。
首先选取一个较大的数N作为待检测的蜘蛛纸牌 游戏 的局数,然后每一局我们计算一次AGT和ATSV 。接下来的总体思路是 求出我们要比对的观察结果的概率(即P值) ,或者更极端一点说,零假设为真(即程序没有偏向性)的概率。如果概率低于某一个阈值(即显著性水平),一个没有偏向性的程序就不太可能产生我们在N局 游戏 中观察到的这种AGT和ATSV值,那我们就 拒绝零假设 并且得到 “ 游戏 有偏向性”的结论 。
那我们如何计算得到 p 值,即观察到我们已经观察到的AGT和ATSV值(这证明 游戏 没有偏向性)的概率呢?在模拟中我们已经得到了在无偏向性的 游戏 中AGT和ATSV的期望值,依次是3.96和-32.9 。更有意思的是,概率论会告诉我们,在无偏向性的 游戏 中AGT和ATSV的值是如何分布的,换句话说,它可以帮助我们计算出观察到某一特定AGT和ATSV值的概率 。所谓的“ 学生 t 检验 ”可以把所有这些数值考虑进去并得出我们想要的p值 。详细内容这里略过,有兴趣的可以参照概率与统计的相关内容 。
从本文的角度出发我们选择 N=100 作为我们玩这个待检验的 游戏 程序的局数,得到了显著性水平值为 0.05 。
胜率估计
除了AGT和ATSV之外,我们也想评估一下 对于“无偏向性”的蜘蛛纸牌程序来讲,“真正的”获胜概率 。一个明显的困难在于胜率是和玩家有关的,所以很难验证“一个玩家能赢50%的 游戏 ”这种说法 。另一个情况是我在不同的蜘蛛纸牌 游戏 程序中得到了从45%到60%的胜率,而且没有证据显示我在使用这些程序的过程中胜率有所提高(也就是说,我的胜率并不随着时间增加而呈现出正相关) 。