轉自:http://blog.csdn.net/freeboy1015/article/details/7544835
編程之美最後一題“挖雷遊戲的概率”沒附答案, 有一則腳註雲“此題適合MATLAB用戶解答”, 頗感有趣. 題目說, 一局16×16的掃雷遊戲剛開始, 只翻開了兩格, 分別顯示數字1和2, 如下圖所示(只畫出了3×5的局部示意圖). 設地雷總數從10逐漸增加到240, 請分別作出圖中A, B, C三處爲地雷的概率曲線.
此題適合用MATLAB解答是因爲要求作出概率曲線. 如果地雷總數一定, 其實手算也很容易. 根據數字1和2的提示, 圖示3×5方格中至少2個地雷, 至多3個地雷. 記M=16×16=256爲掃雷遊戲中格子總數, N爲地雷總數. 分兩種情況考慮.
- 圖中共2個地雷時可能的情況總數: (M−15N−2)⋅(31)⋅(51).
- A處爲地雷的情況總數: 0.
- B處爲地雷的情況總數: (M−15N−2)⋅1⋅(51).
- C處爲地雷的情況總數: (M−15N−2)⋅(31)⋅1.
- 圖中共3個地雷時可能的情況總數: (M−15N−3)⋅(51)⋅(52).
- A處爲地雷的情況總數: (M−15N−3)⋅1⋅(52).
- B處爲地雷的情況總數: 0.
- C處爲地雷的情況總數: (M−15N−3)⋅(51)⋅(41).
要求的概率可以簡單地相除得到:
注意到所求的是比值, 所以(M−15N−2)和(M−15N−3)的值並不重要,
只需知道二者之比. 可以利用
簡化計算.