Bac*_*ach 5 python random scipy
SciPy的stats模块具有"随机变量"类型的对象(他们称之为rv_frozen).它可以很容易地绘制cdf的给定分布的随机变量.这是一个非常简单的例子:
import scipy.stats as stats
n = stats.norm()
x = linspace(-3, 3)
y = n.cdf(x)
plot(x, y)
Run Code Online (Sandbox Code Playgroud)
我想知道是否有办法对这些随机变量进行基本的算术操作.以下示例是一厢情愿的想法(它不起作用).
du_list = [stats.randint(2, 5) for _ in xrange(100)]
du_avg = sum(du_list) / len(du_list)
x = linspace(0, 10)
y = du_avg.cdf(x)
plot(x, y)
Run Code Online (Sandbox Code Playgroud)
这个一厢情愿的例子应该产生随机变量的累积分布函数图,它是100个iid随机变量的平均值,每个随机变量均匀分布在集合上{2,3,4}.
我意识到这有点晚了,但我想我会回答,以防将来有人需要这个.我最近需要相同的功能,甚至考虑扩展scipy rv_discrete来实现它,但后来我找到了PaCAL.
PaCAL是一个Python软件包,用于对随机变量进行算术运算,它支持很多分布,包括连续分布.对双变量联合分布甚至有一些支持.作为PyPI上的包提供.仅适用于Python 2.x.
编辑:Github上的PaCAL repo现在也支持Python 3.x.