鱼C论坛

 找回密码
 立即注册
查看: 4949|回复: 11

[技术交流] 小练习:20170814 骰子游戏

[复制链接]
发表于 2017-8-14 09:40:39 | 显示全部楼层
1.遍历所有可能出现的值(总和),统计次数,分别算出该值出现概率
2.逐个值进行比较,将2边的值的出现概率相乘,累加后即为结果

  1. jzt = {}  # 金字塔出现所有值的统计
  2. for i in range(1,5):
  3.     for j in range(1,5):
  4.         for k in range(1,5):
  5.             for l in range(1,5):
  6.                 for m in range(1,5):
  7.                     for n in range(1,5):
  8.                         for o in range(1,5):
  9.                             for p in range(1,5):
  10.                                 for q in range(1,5):
  11.                                     a = i+j+k+l+m+n+o+p+q
  12.                                     jzt.setdefault(a,0)
  13.                                     jzt[a]+=1
  14. zft= {}  # 正方体出现所有值的统计
  15. for i in range(1,7):
  16.     for j in range(1,7):
  17.         for k in range(1,7):
  18.             for l in range(1,7):
  19.                 for m in range(1,7):
  20.                     for n in range(1,7):
  21.                         a = i+j+k+l+m+n
  22.                         zft.setdefault(a,0)
  23.                         zft[a]+=1
  24. a = 4**9  # 金字塔所有值的总次数
  25. for i in jzt:
  26.     jzt[i] /= a  # 每个值出现的概率(该值的出现次数/所有值的次数)
  27. a = 6**6  # 正方体所有值的总次数
  28. for i in zft:
  29.     zft[i] /= a
  30. gl = 0  
  31. for i in jzt:
  32.     for j in zft:
  33.         if i > j:   # 逐个值进行比较,如果金字塔>正方体,将对应的值的概率进行相乘
  34.             gl += jzt[i]*zft[j]  # 概率累加

  35. print(round(gl,7))

复制代码



%time %run qqq2.py
0.5731441
Wall time: 254 ms

评分

参与人数 1荣誉 +10 鱼币 +10 收起 理由
冬雪雪冬 + 10 + 10

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-10-22 02:56

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表