首页 > 代码库 > 把一个骰子扔n次, n次朝上一面的点数和为s。 输入n, 打印出s的所有可能的值出现的概率。
把一个骰子扔n次, n次朝上一面的点数和为s。 输入n, 打印出s的所有可能的值出现的概率。
#一、
# 1.计算所有数之和
import datetime
start=datetime.datetime.now()
n=10
c=[]
a = [1,2,3,4,5,6]
b = [1,2,3,4,5,6]
total=len(a)**(n)
while n>1:
for i in a:
for j in b:
c.append(i+j)
b=c[:]
c.clear()
n-=1
print(b)
#2.计算各和的概率
sum=0
for i in set(b):
print(‘和为%s的概率:‘%i,b.count(i)/total)
sum+=b.count(i)/total
print(‘总的概率为:‘,sum)
end=datetime.datetime.now()
print((end-start).seconds)
#二、
import datetime
from decimal import Decimal
start=datetime.datetime.now()
def get_dice():
# 一个骰子扔n次
times = 10
# 默认点数
number = [1, 2, 3, 4, 5, 6]
result = []
dice = {}
while times > 0:
result.append(number)
times -= 1
length = len(result)
# 所有可能性
total = len(number) ** length
if length >= 2:
while length > 2:
temp = []
for i in result[-1]:
for j in result[-2]:
temp.append(i+j)
result.pop(-1)
result[-1] = temp
length -= 1
for m in result[0]:
for n in result[1]:
dice[m+n] = dice.setdefault(m+n, 0) + 1
else:
for i in result[0]:
dice[i] = 1
for num, count in dice.items():
dice[num] = str(Decimal(100.0*count/total).quantize(Decimal(‘0.000‘))) + ‘%‘
return dice
for k, v in get_dice().items():
print (k, v)
end=datetime.datetime.now()
print((end-start).seconds)
把一个骰子扔n次, n次朝上一面的点数和为s。 输入n, 打印出s的所有可能的值出现的概率。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。