python 扔骰子

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 扔骰子相关的知识,希望对你有一定的参考价值。

把一个骰子扔n次, n次朝上一面的点数和为s。
输入n, 打印出s的所有可能的值出现的概率。
 1 from decimal import Decimal
 2 
 3 def get_dice():
 4     # 一个骰子扔n次
 5     times = input(please input an integer\n)
 6     # 默认点数
 7     number = [1, 2, 3, 4, 5, 6]
 8     result = []
 9     dice = {}
10     while times > 0:
11         result.append(number)
12         times -= 1
13 
14     length = len(result)
15     # 所有可能性
16     total = len(number) ** length
17 
18     if length >= 2:
19         while length > 2:
20             temp = []
21             for i in result[-1]:
22                 for j in result[-2]:
23                     temp.append(i+j)
24             result.pop(-1)
25             result[-1] = temp
26             length -= 1
27 
28         for m in result[0]:
29             for n in result[1]:
30                 dice[m+n] = dice.setdefault(m+n, 0) + 1
31     else:
32         for i in result[0]:
33             dice[i] = 1
34 
35     for num, count in dice.iteritems():
36         dice[num] = str(Decimal(100.0*count/total).quantize(Decimal(0.000))) + %
37     return dice
38 
39 for k, v in get_dice().iteritems():
40     print k, v

 

以上是关于python 扔骰子的主要内容,如果未能解决你的问题,请参考以下文章

python掷骰子游戏

2022-10-30:给你一个长度为 n 的整数数组 rolls 和一个整数 k 。 你扔一个 k 面的骰子 n 次,骰子的每个面分别是 1 到 k , 其中第 i 次扔得到的数字是 rolls[i]

HDU - 4405 Aeroplane chess(期望dp)

Python随堂测试

把一个骰子扔n次, n次朝上一面的点数和为s。 输入n, 打印出s的所有可能的值出现的概率。

《剑指offer》 面试题43 n个骰子的点数 (java)