You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 04:10:34