Sympy.stats中的概率论

4
这段代码应该输出2/6,但我只得到了0。
from sympy.stats import Die, P, Normal

n = 6

X = Die('X', n) # Six sided Die

P(X == 1) + P(X == 5)

即使我只是尝试计算掷骰子落在特定数字上的概率,如P(X==1),它也输出0!
2个回答

6

Die 没有按照你期望的方式实现 equals 方法。如果你只写 X == 1,结果是 False。然而,如果你写类似 X > 3 的表达式,你得到的不是 True 或者 False,而是一个表达式(也就是说,P 可以希望从它返回某些东西)。

当你写

P(X == 1)

这与编写以下内容相同:

P(False)

对于一个骰子来说,这没有意义。如果你想知道每个面的概率,你可以使用 density

from sympy.stats import Die, P, Normal, density
n = 6
X = Die('X', n) # Six sided Die
density(X)[1] + density(X)[5] # 1/3

5

您可以直接使用sympy自带的Eq(x,y)函数:

from sympy.stats import Die, P, Normal
from sympy import Eq

n = 6
X = Die('X', n) # Six sided Die

print(P(Eq(X, 1)) + P(Eq(X, 5))) # prints 1/3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接