概率计算包(基础版)

$ 首先回忆一下概率计算单事件的概率为P(A),不发生的概率就是1-P(A) $

$ 两个独立事件的交集是 P(A n B) = P(A) P(B) $

$ 如果两个事件互斥,也就是同时只能发生一个,那事件不发生的概率就是 P(A) + P(B) $

$如果事件不是相互排斥的,那么,两个事件同时不反升的概率就是 P(A U B) = P(A) + P(B) - P(A n B)

总结:概率的交集用乘法概率的并集用加法$

import numpy as np
import matplotlib.pyplot as plt

# 求概率
def P(SET,A):
    m = SET.shape[0]
    return np.dot((SET==A).astype(int),np.ones(m))/np.array([m])
    
#相反概率
def PContrary(SET,A):
    return 1-P(SETA,A)

# 联合事件概率计算
def PUnin(SETList,eventList):
    if len(SETList)==len(eventList):
        step1 = np.array([P(sets , even) for sets , even in zip(SETList,eventList)])
        return np.cumprod(step1)[-1:]

#联合事件的反的概率
def PUninContrary(SETList,eventList):
    return 1-PUnin(SETList,eventList)

# 相互独立且互斥事件的联合事件发生概率
def PIndependentUnin(SETAList,eventList):
    if len(SETAList)==len(eventList):
        m = len(SETAList)
        step = np.array([P(sets,even) for sets , even in zip(SETAList,eventList)])
        return np.dot(step.T,np.ones((m)))
    else:
        return np.nan
        
#相互独立且互斥事件的联合发生概率的反概率
def PIndependentUninsContrary(SETList,eventList):
    m = len(SETList)
    return m-PIndependentUnin(SETList,eventList)

#如果相互独立的事件不是互斥的,则联合概率的反概率为
def P2(SETList,eventList):
    return PIndependentUnin(SETList,eventList)-PUnin(SETList,eventList)

#双事件条件A成立则B的概率
def PAandB(SETA,SETB,A,B):
    step1 , step2 = (P(SETA,A),P(SETB,B))
    return PUnin([SETA,SETB],A)/P(SETB,B)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值