作为软考中的一道经典题,我想到了在复习过程中的休息时间自动计算和比较EMV。这纯粹是为了娱乐。
使用字典的基本选择和排序操作。
1、预期货币价值(EMV)计算公式:EWV=货币收益概率+货币损失概率
计算公式定义:一种统计技术,当某些情况将来可能发生或不发生时,计算出平均结果。常用于决策树分析。机会的 EMV 通常表示为正值欧意交易所,而威胁的 EMV 表示为负值。 EMV基于风险中性的假设,既不规避风险,也不承担风险。项目的 EMV 可以通过将每个可能结果的值乘以其发生的概率并将所有乘积相加来计算。
2. 例题
有一个项目有A、B两个实施方案,如果A方案顺利的话,盈利20万元的概率是20%;如果A方案顺利的话,盈利20万元的概率是20%;正常情况下,盈利18万元的概率为35%;在所有风险下,盈利18万元的概率为35%。这样的话,损失20万元的概率就是15%。如果B计划一切顺利okx,盈利20万元的概率是15%。正常情况下,盈利40万元的概率是50%;在所有风险都会发生的情况下,损失30万元的概率是20%。解释应该采用哪种解决方案。
回答:
A方案的EMV=20x20%+18x35%+(-20x15%)=7.3(万元)。
B方案的EMV=20x15%+40x50%+(-30x20%)=17(万元)。
比较两个EMV值,方案B更为合理,因为项目B的EMV值更高。
3. 代码
'''
EMV计算和比较
'''
project = {
"A":{"success":[20, 0.2],"normal":[18,0.35],"fail":[-20,0.15]},
"B":{"success":[20, 0.15],"normal":[40,0.5],"fail":[-30,0.2]},
}
# EMV = project["A"]
# 计算方法
# EMV = project["A"]["success"][0] * project["A"]["success"][1] + project["A"]["normal"][0] * project["A"]["normal"][1] + project["A"]["fail"][0] * project["A"]["fail"][1]
# print(EMV)
EMV = {}
for key in project:
# print(key + ":" + str(project[key])) # 返回项目存在的方案个数(key值)
sum = 0
for i in project[key]:
# print(i) # 返回方案中存在的可能结果
# print(project[key][i]) # 返回方案中存在的可能结果
sum += project[key][i][0] * project[key][i][1]
# print(key + ":" + str(sum)) # 返回每个方案的EMV
EMV[key] = sum # 返回每个方案的EMV并存储在EMV字典中
# print(EMV)
# 按照字典的值进行排序,生成列表,注意排序后不再是字典
EMV = sorted(EMV.items(), key=lambda x: x[1], reverse=True)
print(EMV)
print("MAX-EMV:" + str(EMV[0]))
网友评论