假设我们有一个有4名玩家的游戏。游戏结束后,我们将根据4名玩家的得分获得排名,排名1是最好的,排名4是最差的。我创建了一个预测玩家排名的模型。详细地说,我创建了两个模型来预测谁将进入游戏的等级1和等级2:
- 模型A预测谁在排名1中获胜的概率
- 模型B预测谁在排名2中获胜的概率
所有的概率输出都将在这个矩阵中:
播放器ID | Rank1(prob) | Rank2(prob)||
---|---|---|---|
播放器A | 0.7 | 0.8 | |
播放器B | 0.2 | 0.05 | |
播放器C | 0.1 | 0.1 | |
播放器D | 0.1 | 0.05 |
如果在我们知道玩家A赢得第一名后,玩家B赢得第二名的机会确实发生了变化(因为玩家A不能同时获得第一名和第二名),那么答案应该计算如下:
玩家A赢得第一名和玩家B赢得第二名的概率为(A先赢)*(B先赢,A赢)=0.7*0.25=0.175
自(B赢得第二名,A赢得)=0.05/(0.1+0.05+0.05)=0.25
玩家A赢得第二名和玩家B赢得第二位的概率为(B赢得第一名)*(A赢得第二名,B赢得)=0.8*0.84=0.168
自(A赢得第二名,B赢得)=0.8/0.95=0.84
根据总概率定律,由于上述两个事件不能同时发生:
因此,任何一种情况发生的概率都是
0.175+0.168= 0.343
将其放入代码中,假设矩阵的名称为";mat";
ans = mat[0][0]*(mat[1][1]/(1-mat[0][1)) + mat[1][0]*(mat[1][0]/(1-mat[1][1]))
print(ans)
输出:
0.343
如果玩家B获得第二名的概率没有改变,即使我们知道玩家A赢得了第一名(意味着他们是独立的),那么:
球员A排名第一,球员B排名第二的概率=0.7*0.05=0.0345
球员A排名第二,球员B排名第一的概率=0.8*0.2=0.16
根据总概率定律,由于上述两个事件不能同时发生:
因此,任何一种情况发生的概率是0.16+0.0345=0.1945
将其放入代码中,假设矩阵的名称为";mat";
ans = mat[0][0]*mat[1][1] + mat[0][1]*mat[1][0]
print(ans)
输出:
0.1945
希望我能帮忙:)如果你有任何问题,请随时在评论中提问
前提
首先,你的前提中有一个bug。你预测玩家a排名第一的概率为0.7,而你预测同一玩家a在同一场比赛中排名第二的概率为0.8。值为1表示完全确定,值为0表示否定的完全确定。现在,你的
0.7+0.8=1.5
这违反了布尔代数的基本框架,因为对同一事件的不同结果的概率求和会得到比支持的最大值1更高的值。
此外,玩家A的排名应该低于2的概率,所以我们应该有
p(第一个)+p(第二个)+p(下一个)=1
对于任何玩家来说。如果这是错误的(在你的情况下也是错误的),那么前提是不正确的。
该前提的另一个问题可以从对Rank1(prob)求和得到1.1的事实中看出,尽管对Rank2(prob)求和我们得到1的期望值。
但在这一点上,让我们关注排名1(prob)。
我们知道,作为一个绝对确定的事实(概率为1),四个玩家中的一个将排名为1,这意味着他们的概率应该有一个恰好等于1的和。由于在您的情况下是1.1(0.7+0.2+0.1+0.1),我们看到您的前提存在另一个问题。因此,首先:你需要修复你的前提,以确保它们与现实相对应,并且不会违反布尔逻辑的基本框架(违反这个框架是不符合现实的绝对肯定标志)
逻辑与概率
在概率计算中,应用逻辑并不困难。例如,如果你想知道p(X)AND p(y)是否为真,那么你可以这样计算:
p(X和Y)=p(X)*p(Y)
解释:概率本身已经与保证(值为1)结合,如p(X)=1*p(X)。0<=p(X)<=当你用p(Y)计算逻辑AND的结果时,1是完整的问题空间,因此你计算了一个进一步的联合,得到p(X)*p(Y)
在逻辑OR 的情况下
计算析取是作为
p(X或Y)=p(X)+p(Y)-p(X和Y)=p(X)+p(Y)-p(X)*p(Y
解释:直观地说,逻辑OR的结果应该是这些情况的总和,但有一点需要注意:p(X AND Y)已经作为一种可能性包含在p(X)和p(Y)中,所以当你计算p(X)+p(Y)时,它会出现两次(以隐藏的方式),因此,你需要减去它,以确保它被精确地计算到结果中一次。
计算公式
我们很想知道是PlayerA第一,PlayerB第二,还是PlayerB第一,PlayerCA第二。
由于你的前提有一些错误,我不会使用你的价值观。相反,我将把Rank1(A)表示为玩家A排名第一的概率,依此类推
因此:
p(秩1(A)和秩2(B))=秩1(A)*秩2(B)(1)
类似:
p(秩1(B)与秩2(A))=秩1(B)*秩2(A)(2)
因此:
p((Rank1(A)AND Rank2(B))OR
我们知道p((Rank1(A)AND Rank2(B))AND(Rank1(B)AND Rank2(A))正是0,因为这是自相矛盾的,因为它假设PlayerA同时排名第一和第二,并且它类似地假设PlayerB同时排名第一和第二。因此:
p(Rank1(A)AND Rank2(B))+p
让我们同时应用公式(1)和(2):
p(Rank1(A)AND Rank2(B))+p(Rank1(B)AND Rank2(A))=Rank1