python - 需要输出掷 2 个骰子的前 3 个结果,这两个骰子的面数是可变的

标签 python sum dice

以下代码计算掷两个相等边数可变的骰子结果的概率分布:

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/

相关文章:

algorithm - 计算具有大量被加数的和

java - 掷骰子计划

python - 如何组合两个具有不同类型索引的数据帧(一个是DatetimeIndex,另一个是PeriodIndex)?

python - matplotlib:如何有条件地从二维数组绘制直方图

mysql - 对分组子查询求和

根据输入参数模拟掷骰子的Python函数 1) 骰子数量 2) 掷骰子数量

掷骰子的Java方法每次都返回 'doubles'

python-查找列表中特定范围的项目总数

Python;名称绑定(bind)不是对象引用?

asp.net - 带有计算但没有过滤器的 SUM 数据表列