Peter has nine four-sided (pyramidal) dice, each with faces numbered 1, 2, 3, 4.
Colin has six six-sided (cubic) dice, each with faces numbered 1, 2, 3, 4, 5, 6.
Peter and Colin roll their dice and compare totals: the highest total wins. The result is a draw if the totals are equal.
What is the probability that Pyramidal Pete beats Cubic Colin? Give your answer rounded to seven decimal places in the form 0.abcdefg
由题意知,这是一道概率求解问题。
Peter 有九颗 four-sided 骰子,Colin有六颗 six-sided 骰子,他们二人骰子抛掷点数的和的最大值$Max$均为36,所以可按以下思路解答:
- 分别为Peter 和Colin 构建长度为$Max$ 的数组 $peterCount$ 和 $colinCount$ ,用来保存他们二人抛掷骰子可能出现的点数和,其中数组 $peterCount$ 和 $colinCount$ 的$index$表示抛掷骰子的点数和,$peterCount[index]$ 和$colinCount[index]$ 的值表示能抛掷出该点数事件出现的次数;
- 使用 $peterTotal$ 和 $colinTotal$ 分别表示两人抛掷骰子的全体事件;
- 创建长度为Max 的数组 $peterProb$ 和 $colinProb$ ,分别保存两人出现点数和为$index$的概率,即
$$
peterProb[index] = peterCount[index]/peterTotal
$$
和
$$
colinProb[index] = colinCount[index]/colinTotal
$$
- 要求peter 获胜的概率即是求Peter 抛掷骰子的点数和大于Colin抛掷的点数和,用 $X_p$ 表示Peter抛掷的点数和,用 $X_c$ 表示Colin抛掷的点数和,用 $P(X_p)$ 和$ P(X_c)$ 分别表示Peter 和Colin 抛掷对应点数和的概率,则Peter 获胜的概率为:
$$
P_w = \sum P(X_p)*P(X_c < X_p)
$$
- 最后使用Java 中 将double数据保留题目要求的小数位数,再用 $Double.parseDouble(s)$ 将前面的 $String$ 类型数据转化为 $Double$ 类型,即完成了问题的求解。
*总结:解答本题的关键点是理解Peter 和Colin 抛掷骰子点数和的事件分析与获得该点数的概率的计算,其次就在于找到Peter 获胜时满足的概率条件,理清该思路再编程解答就很简单。*