剑指offer-Q60 n个骰子的点数
2024-09-05 15:35:09
python版本代码
g_maxValue = 6 # 单个骰子最大的点数
def PrintProbability(number):
'''
:param number: 骰子的个数
:return: 打印概率分布,返回表示概率分布的数组
'''
if number < 1: # 骰子个数小于1
return
maxSum = number * g_maxValue
pProbabilities = [0 for i in range(maxSum - number + 1)]
Probability(number, pProbabilities)
total = pow(g_maxValue, number)
for i in range(number , maxSum + 1):
ratio = pProbabilities[i-number]/total
print(i, ratio)
return pProbabilities
def Probability(number, pProbabilities):
'''
:param number: 骰子个数
:param pProbabilities:概率分布(计算频数)
:return: None
'''
for i in range(1, g_maxValue+1):
_Probability(number, number, i, pProbabilities)
def _Probability(original, current, sum, pProbabilities):
'''
:param original: 等于骰子的个数,表示的意义是最小的点数之和,作为pProbabilities定位索引的一个offset
:param current: 还剩下的未考虑的骰子的个数
:param sum: 考虑过的骰子的点数之和
:param pProbabilities: 概率分布(计算频数)
:return: None
'''
if current == 1:
pProbabilities[sum - original]+=1
else:
for i in range(1, g_maxValue+1):
_Probability(original, current - 1, i+sum, pProbabilities)
PrintProbability(1)
最新文章
- Logging configuration
- WebApi Put方法出现MethodNotAllowed解决方法
- WLAN拓扑介绍-07
- ubuntu wireshark finish
- Sed 直接修改文件
- 移动开发的框架(用Firepower,不用listview,超快) good
- Flask從入門到入土(一)——程序的基本結構
- 神奇的Scala Macro之旅(四)- BeanBuilder
- emWin实现ATM机界面设计,含uCOS-III和FreeRTOS两个版本
- MongoDB:配置与安装
- 数据库訪问技术之JDBC
- 让wampserver2.5.exe支持sql server数据库的方法
- MySql5.7 Distinct与Order By同时使用报错的解决方案
- day28Spark
- 2.Geany安装后编译器配置
- PeekMessage和GetMessage函数的主要区别
- 提取ipa里面的资源图片
- js判断两个日期是否严格相差整年(合同日期常用)
- json.dumps loads 终于区分出来了
- 海思NB-IOT的SDK看门狗的使用