把一个骰子扔n次, n次朝上一面的点数和为s。 输入n, 打印出s的所有可能的值出现的概率。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了把一个骰子扔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的所有可能的值出现的概率。的主要内容,如果未能解决你的问题,请参考以下文章