20. 骰子求和
扔 n 个骰子,向上面的数字之和为 S。给定 Given n,请列出所有可能的 S 值及其相应的概率。
样例
给定 n = 1
,返回 [ [1, 0.17], [2, 0.17], [3, 0.17], [4, 0.17], [5, 0.17], [6, 0.17]]
。
注意事项
You do not care about the accuracy of the result, we will help you to output results.
class Solution:
# @param {int} n an integer
# @return {tuple[]} a list of tuple(sum, probability)
def __init__(self):
self.res_list = {}
self.max_n = 0
def dicesSum(self, n):
# Write your code here
#全部组合数
der = pow(6, n)
#初始化,只投一次,所有出现的次数都为1
res = [1] * 6
for j in range(n - 1):
#没多投一次,结果会多5个
res_ = [0] * (len(res) + 5)
for i in range(len(res_)):
#到中间的时候,开始反向
left = max(i-5, 0)
right = min(i+1, len(res))
res_[i] = sum(res[left:right])
res = res_
res = [[n+i, p/der] for i,p in enumerate(res)]
return res