|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
原帖子:http://bbs.fishc.com/thread-94399-1-1.html
题目:
Peter 有九个四面的(金字塔型)骰子,每个分别标上 1,2,3,4。
Colin 有六个六面(正方体)骰子,每个分别标上 1,2,3,4,5,6。
Peter 和 Colin 摇骰子,然后比较他们得到的总和:总和最高的获胜。如果相等的话,则是平局。
请问,金字塔 Peter 赢了正方体 Colin 的概率是多少?以七位小数 0.abcdefg 的形式给出你的答案。
正确答案是:
0.5731441
回答正确的鱼油是:
jerryxjr1220 0.2519s
小Q学Python 0.4143s
夏天和大熊 0.3912s
运维小书童 1.5578s
小剑剑 0.0200s
suloman 1.0474s
Greenland 0.3101s
chunchun2017 0.0266s
用时最短的是:
小剑剑 0.0200s
chunchun2017 0.0266s
我把我的程序也发出来和大家交流一下。
- import itertools, time
- start = time.time()
- lst_p = itertools.product(range(1, 5), range(1, 5), range(1, 5), range(1, 5),
- range(1, 5), range(1, 5), range(1, 5), range(1, 5), range(1, 5)) #把9个4面的骰子模拟出所有的可能
- p = (sum(i) for i in lst_p) #看看这些可能的数字之和是什么
- d_p=dict.fromkeys(range(9, 37), 0)#由于最小数是9最大数是36,建立一个字典存放每个和数的数量
- for i in p:
- d_p[i] += 1
- lst_c = itertools.product(range(1, 7), range(1, 7), range(1, 7), range(1, 7),
- range(1, 7), range(1, 7))
- c = (sum(i) for i in lst_c)
- d_c=dict.fromkeys(range(6, 37), 0)
- for i in c:
- d_c[i] += 1
- win = 0
- total = 0
- lst = itertools.product(d_p, d_c) #再将Peter 和Colin相互比较的所有可能对比
- for i in lst:
- if i[0] > i[1]:
- win += d_p[i[0]] * d_c[i[1]]
- total += d_p[i[0]] * d_c[i[1]]
- print('%.7f'%(win/total))
- print(time.time() - start)
复制代码
|
|