开宝箱-抽装备-求期望(概率论与数理统计 & python)

问题描述

玩家在游戏中开宝箱有概率获得装备A和B,开一次宝箱需要100游戏币,每次只能获得一个道具,其中获得装备A的概率5%,获得装备B的概率为15%。请问,玩家在放回随机的条件下获得一套A和B,需要游戏币的期望是多少?请写出计算过程。

解题思路

  1. 列举可能性,探索规律(统计数量)‘
    开宝箱-抽装备-求期望(概率论与数理统计 & python)_第1张图片
  2. 考虑抽取顺序(排序去重)
    计算开箱次数的公式:
    n u m = ∑ a = 2 n a × [ ∑ b = 1 a − 1 C a − 1 b × ( 0.05 × 0.1 5 b + 0.15 × 0.0 5 b ) × 0. 8 a − 1 − b ] num = \sum_{a=2}^na\times[\sum_{b=1}^{a-1}C_{a-1}^b\times(0.05\times0.15^b+0.15\times0.05^b)\times0.8^{a-1-b}] num=a=2na×[b=1a1Ca1b×(0.05×0.15b+0.15×0.05b)×0.8a1b]

代码实现

def cal_factorial(n):
    if n == 0 or n == 1:
        return 1
    else:
        return (n * cal_factorial(n - 1))

n = 1000
num = 0
probablity = 0
sum_probablity = 0

for a in range(2,n+1):
    for b in range(1,a):
        probablity += cal_factorial(a-1)/(cal_factorial(b)*cal_factorial(a-1-b))\
        * (0.05*0.15**b + 0.15*0.05**b) * 0.8**(a-1-b)
    sum_probablity += probablity
    num += a*probablity
    print("第{}次开箱成功的概率是:{}".format(a,probablity))
    probablity = 0

print("总计概率:",sum_probablity)
print("开箱成功的期望次数:",num)

运行结果

开宝箱-抽装备-求期望(概率论与数理统计 & python)_第2张图片

你可能感兴趣的:(python)