|
正好需要在表里列出n个骰子结果之和为特定数的几率,百度了下,给的方法似乎都不够傻瓜。当然可能也是因为我学的概率都还给老师了,太复杂的代码也看不懂。。。
于是想了个比较傻瓜的方法来和大家讨论下。
基本思路是将所有骰子的结果全部“按规律”列出,然后一一比对是否骰子的和是目标数值。
所谓的规律如下图左侧2列,这是2个3面骰,共有3^2种情况。
2个3面骰的规律
发现对于第i行的情况,第n个骰子的点数可以用以下式子计算:
floor( (i-1) / 3^(n-1) ) mod 3 +1
所以在这个较傻瓜的思路下可以用以下函数来求解n个m面骰子之和为s的概率:
Function n个m面骰子之和为s的几率(n As Long, m As Long, s As Long)
t = 0
For i = 0 To m ^ n - 1
sumnum = 0
For j = 0 To n - 1
sumnum = sumnum + Int(i / m ^ j) Mod m + 1
Next j
If sumnum = s Then t = t + 1
Next i
n个m面骰子之和为s的几率 = t / m ^ n
End Function
最后想问下概率高手,是否有直接用公式解决的方案,
就是不用自定义函数,直接在excel表格里一个公式去拉所有情况的方法。
|
|