楼主:
c910335 (达人)
2015-06-03 20:32:29原文恕删
<<前言>>
以下皆为高中数学
然而我自认为数学能力不算出众
如有误请指出不要炮我QAQ
让我们用数学分析三色阵的Combo数
目标是算出每种最大Combo数发生之机率
为此必须要先得知每种盘面的Combo数及开出其之机率
<<Combo数>>
这个实在是想不到100%正确的算法
我所使用的算法是将每属珠的数量除以三再加总
但是若有一属数量超过19
那么就以下列方式计
20~22: 5
23 : 4
24 : 3
我目前无法证明这样的算法是正确的
希望能有人举出反例 <(_ _)>
以下举几个计算Combo数的例子
(24, 3, 3) => 3 + 1 + 1 = 5Combo
(10, 10, 10) => 3 + 3 + 3 = 9Combo
(20, 6, 4) => 5 + 2 + 1 = 8Combo
(13, 9, 8) => 4 + 3 + 2 = 9Combo
<<单一盘面机率>>
令一盘面珠子数量为(a, b, c) //其中a b c >= 3, 且 a + b + c = 30
那么三色阵开出这种盘面的机率为
(1/3)^30 * 30! / a! / b! / c! / Valid_Board_Probability
//其中Valid_Board_Probability为三色阵每属皆开出三颗以上之机率
让我慢慢解释这个公式是如何求得的
先以简单的掷硬币作为例子
掷两次硬币 皆开出正面的机率是1/4
因为掷出正面的机率是1/2
皆两次正面的就是(1/2) * (1/2) = 1/4
由此推广到PAD三色阵就是(1/3)^30
那么掷两次硬币 而开出一正一反的机率?
掷出正面机率是1/2 掷出反面机率是1/2 正反就是1/4
但是一正一反会有"正反"与"反正"二种情形
必须再乘上排列数
所以机率是(1/2) * (1/2) * 2 = 1/2
由此推广到PAD三色阵就是(1/3)^30 * 30! / a! / b! / c!
再来掷三次硬币 在至少开出一正的条件下 开出恰好一反的条件机率?
正正反机率是(1/2)^3 算上三种排列是(1/2)^3 * 3
但是这里要求至少一正的条件下
而至少一正的机率是所有情形扣掉全反 1 - (1/2)^3 = 7/8
所以条件机率是(1/2)^3 * 3 / (7/8) = 3/7
由此推广到PAD三色阵就是
(1/3)^30 * 30! / a! / b! / c! / Valid_Board_Probability
那么Valid_Board_Probability到底是什么?
由于三色阵保证每属至少三颗
所以我们想要知道的机率是每属至少开出三颗的条件下之条件机率
因此需要先算出Valid_Board_Probability
可以使用(1/3)^30 * 30! / a! / b! / c!
将所有合法盘面代入并加总机率
可得Valid_Board_Probability约为 0.9980482534542854
所以实际上公式为 (1/3)^30 * 30! / a! / b! / c! / 0.9980482534542854
不知道这样解释能不能理解?
以下举几个例子
(10, 10, 10): 0.02701355838113663
(24, 3, 3): 5.779133453214403 * 10^(-8)
(17, 7, 6): 0.001000090602345659
<<结论>>
将所有可行盘面代入公式计算盘面
并依照Combo数加总其机率
可得以下结果
5Combo: 13650 / 78731526739 = 1.733740035964324 * 10^(-7)
6Combo: 163800 / 78731526739 = 2.0804880431571887 * 10^(-6)
7Combo: 14071239 / 78731526739 = 1.787243253474183 * 10^(-4)
8Combo: 8737170195 / 78731526739 = 0.11097422540736791
9Combo: 61218244745 / 78731526739 = 0.7775569365997735
10Combo: 8761863110 / 78731526739 = 0.11128785980546435
期望值: 708579745088 / 78731526739 = 8.999949250787258 (Thanks Yamamoto!)
<<后话>>
以上皆为高中数学
然而我自认为数学能力不算出众
如有误请指出不要炮我QAQ
若是造成游戏内的损失 本人一概不负责
打完了好累...