sympy.stats骰子概率计算异常:预期2/6却输出0的问题
SymPy stats中Die概率计算返回0的问题解决
你的问题出在Python原生整数与SymPy随机变量的比较无法被正确识别为概率事件,导致P函数返回0。
原因
SymPy的Die生成的随机变量是符号对象,当你用Python原生int(比如1)和它做比较时,生成的等式不是SymPy概率系统能解析的有效事件,因此P函数无法计算正确概率,返回默认值0。
解决方法
将比较中的整数转换为SymPy的符号数值类型,比如使用sympy.S()(快捷创建符号数值)或sympy.Integer()。
修改后的代码:
from sympy.stats import Die, P from sympy import S n = 6 X = Die('X', n) # 六面骰子 result = P(X == S(1)) + P(X == S(5)) print(result) # 输出 1/3(即2/6)
或者使用Integer:
from sympy.stats import Die, P from sympy import Integer n = 6 X = Die('X', n) result = P(X == Integer(1)) + P(X == Integer(5)) print(result)
验证
单独计算P(X == S(1))会返回1/6,符合预期,相加后得到正确的2/6(化简为1/3)。
内容的提问来源于stack exchange,提问作者Mohammed Itani
相关产品推荐
相关产品推荐

