以下代码计算掷两个相等边数可变的骰子结果的概率分布:
def compute_probability_distribution(sides):
dist = {x+y: 0 for x in range(1, sides+1) for y in range(1, sides+1)}
for die_1 in range(1, sides+1):
for die_2 in range(1, sides+1):
dist[die_1+die_2] = dist[die_1+die_2] + 1
probs = dist.items()
print "Prob dist: ", probs
例如,对于普通的 6 面骰子,概率分布为 [(2,6),(3,2),(4,3),(5,4),(6,5),(7,6 ),(8,5),)(9,4),(10,3),(11,2),(12,1)],其中每个元组的第一个元素是 2 个骰子的总和,并且第二个元素是它在一卷中出现的方式的数量。谁能告诉我如何按每个元组的第二个元素对上述概率分布列表进行排序,以便我可以输出最有可能出现的前(1 或 3)次?我正在考虑使用具有某种比较功能的内置列表排序。
最佳答案
probs = [(2,6),(3,2),(4,3),(5,4),(6,5),(7,6),(8,5),(9,4),(10,3),(11,2),(12,1)]
>>> sorted(probs, key=lambda x: x[1]) # x[1] is second element of tuple pair.
[(12, 1),
(3, 2),
(11, 2),
(4, 3),
(10, 3),
(5, 4),
(9, 4),
(6, 5),
(8, 5),
(2, 6),
(7, 6)]
关于python - 需要输出掷 2 个骰子的前 3 个结果,这两个骰子的面数是可变的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45535400/