julia编程 无保底卡池毕业概率计算(例子 碧蓝航线)

2021-06-10  本文已影响0人  mudssky

最近复习了一下概率论

以前学的时候,基本没有用过,题目也没刷多少。考试考完就再也没用过了。其实概率和统计还是很有用的。

通过这种实际例子的学习才更加直观。

无保底卡池,以碧蓝航线为例

UR,SSR,SR的抽卡概率分别是0.012,0.02,0.025

先说结论,

所以说150抽还抽不到差不多就属于非洲人范围了。200发抽不到,十个人里面有一个,在大的人群基数里面其实也挺多了。

200发SSR的概率是98%,50个人里面有一个200发抽不到的人

关于卡池毕业,以最近的新泽西卡池为例,up的卡的概率分别是0.012,0.02,0.02,0.025,这4张卡抽到就算毕业了。

200发内毕业的概率约为87%

150发内毕业的概率为74%

差不多10个人里面有一个人不毕业,所以200发没毕业的人其实也有挺多的。

01.抽某一张卡无保底措施情况的模拟

我们假设抽卡概率是独立的

下面是要用到的函数

using Plots
plotly()
# 计算在第n次抽卡抽中的概率
function dropProbilityN(gachaTimes,dropRate)
    return (1-dropRate)^(gachaTimes-1)*dropRate
end
# 第1到n次抽中概率的数组
function dropProbilityNArr(gachaTimes,dropRate)
    arr=[]
    for i in 1:gachaTimes
        push!(arr,dropProbilityN(i,dropRate))
    end
    return arr
end
# n次之前抽中概率的数组
function dropProbilityBeforeNArr(gachaTimes,dropRate)
    arr=dropProbilityNArr(gachaTimes,dropRate)
    return cumsum(arr)
end
# 计算n发以前抽中的概率
function dropProbilityBeforeN(gachaTimes,dropRate)
    arr=dropProbilityBeforeNArr(gachaTimes,dropRate)
    return arr[gachaTimes]
end

设定抽卡次数和掉落率,然后绘图

# 抽卡次数
gachaTimes =200
# 卡牌掉落率
dropRate = 0.012
plot(dropProbilityBeforeNArr(gachaTimes,dropRate))

下面是0.0012概率的角色,在200抽内的掉落概率曲线

image-20210610152554939.png

02. 抽多张卡卡池无保底措施毕业概率的模拟

由独立性,可知,卡池毕业的概率等于每张卡抽出概率的乘积

定义抽卡次数和卡池

gachaTimes2=200
dropRateList=[0.012,0.02,0.02,0.025]
# 卡池所有卡抽卡200抽出货概率曲线的列表
function multiDropProbilityBeforeNArr(gachaTimes,dropRateList)
    arr=[]
    for i in dropRateList
        push!(arr,dropProbilityBeforeNArr(gachaTimes,i))
    end
    return arr
end

# 把每张卡抽出概率相乘,得到毕业概率的列表
function graduateBeforeNArr(gachaTimes,dropRateList)
    arr=multiDropProbilityBeforeNArr(gachaTimes2,dropRateList)
    res=[]
    for i in 1:gachaTimes
        graduateN=1
        for j in 1:length(dropRateList)
            graduateN*=arr[j][i]
        end
        push!(res,graduateN)
    end
    return res
end 
# 只计算毕业概率,只返回一个毕业概率值
function graduateBeforeN(gachaTimes,dropRateList)
    graduateN=1
    for i in dropRateList
        graduateN*=dropProbilityBeforeN(gachaTimes,i)
    end
    return graduateN
end

进行绘图

plot(graduateBeforeNArr(gachaTimes2,dropRateList))

下面是新泽西卡池毕业的概率曲线

image-20210610152224163.png
上一篇 下一篇

猜你喜欢

热点阅读