我正在尝试以代数方式操纵二项分布。具体来说,我想得到一个随机变量的期望值和标准差:
import sympy
import sympy.stats
from sympy import *
a = sympy.Symbol('a', integer=True)
W = sympy.stats.Binomial('W', a, sympy.S.Half, +1, -1)
print (W)
print (sympify(a).is_integer)
sympy.stats.E(W)
哪些输出
W
True
然后扔ValueError: a is not an integer
. 我想知道我在这里做错了什么。
当我将您的代码复制并粘贴到当前主控版中时,我得到
Sum(Piecewise((2**(-_k)*2**(_k - a)*_k*binomial(a, _k), (_k >= 0) & (_k <= a)), (0, True)), (_k, 0, a))
也许您使用的是旧版本的 SymPy。