多枚骰子投掷的期望求和问题(相同点数成对抵消规则)
多枚骰子投掷的期望求和问题(相同点数成对抵消规则)
嘿,这个问题我太懂了!先把规则再明确下:掷若干个公平骰子,相同点数成对抵消——比如掷出(1,1,2)就剩一个2,得分是2;掷出(1,1,1)就剩一个1,得分是1;要是成对完没剩下,得分就是0。我们要算的是最终得分的期望值对吧?
先从简单的情况入手:2个骰子
你已经知道可以枚举36种情况计算,但其实用线性期望能更快:
- 总共有6种点数相同的情况(得分0),剩下30种点数不同的情况,得分是两点之和。
- 不过更高效的方式是拆分每个点数的贡献:对于任意点数k,只有当它出现奇数次时(这里就是1次)才会贡献k,出现偶数次(2次)贡献0。
- 单个点数k出现1次的概率是
2*(1/6)*(5/6)(比如(1,2)和(2,1)),所以每个k的期望贡献是k * 2*(1/6)*(5/6)。 - 6个点数加起来,总期望就是
(1+2+3+4+5+6)*2*(1/6)*(5/6) = 21*(10/36) = 35/6 ≈5.833,和枚举结果一致。
重点:3个骰子的简化计算
你之前尝试用总sum减重复部分,其实线性期望才是快速解题的关键——不管变量是否独立,期望的线性性都成立,这简直是这类问题的神器!
步骤如下:
- 拆分每个点数的贡献:对于点数k,只有当它出现奇数次时(1次或3次),才会贡献k;出现偶数次(0次或2次)贡献0。
- 计算单个点数k出现奇数次的概率:
- 3个骰子中,出现1个k的概率是
C(3,1)*(1/6)*(5/6)^2,出现3个k的概率是C(3,3)*(1/6)^3。 - 加起来就是
(3*25 +1)/216 =76/216=19/54。
- 3个骰子中,出现1个k的概率是
- 所有点数的贡献期望是对称的,所以总期望就是
(1+2+3+4+5+6)*19/54 =21*19/54=133/18≈7.388。
不用枚举216种情况,几分钟就能算出来!
推广到n个骰子(比如100个)
同样用线性期望,我们可以推导出通用公式:
- 对于单个点数k,n个骰子中出现奇数次的概率有个简洁公式:
[1 - (2/3)^n]/2。- 推导小技巧:用生成函数,单个骰子的生成函数是
(5/6)+(1/6)x,n个的就是[(5/6)+(1/6)x]^n,奇数项系数和就是(f(1)-f(-1))/2,代入后就能得到这个结果。
- 推导小技巧:用生成函数,单个骰子的生成函数是
- 总期望就是所有点数贡献之和:
(1+2+3+4+5+6)*[1 - (2/3)^n]/2 =21*[1 - (2/3)^n]/2。
比如n=100时,(2/3)^100是极小的数(几乎趋近于0),所以总期望≈21/2=10.5,非常好算!
为什么这个方法更高效?
不管n是3还是100,我们都不用枚举海量的情况,只需要利用对称性和期望的线性性,几步就能得到结果,完全适合快速回答的场景。
备注:内容来源于stack exchange,提问作者Van Tom
相关产品推荐
相关产品推荐

