2024-10-04 05:21:40 发布
网友
我想生成一个二项式分布。我想要一个二项式分布,但我希望它以零为中心(我知道这对于二项式分布的定义没有多大意义,但这仍然是我的目标。)
我发现在python中执行此操作的唯一方法是:
def zeroed_binomial(n,p,size=None): return numpy.random.binomial(n,p,size) - n*p
这个发行版有真名吗?这段代码真的给了我想要的吗(我怎么知道)?有没有更干净/更好/规范/已经实现的方法?在
scipy.stats模块中实现的概率分布允许您通过在构造函数中指定loc关键字来任意移动分布。要获得均值偏移接近0的二项分布,可以调用
scipy.stats
loc
p = stats.binom(N, p, loc=-round(N*p))
(请确保对离散分布的loc使用整数值。)
下面是一个例子:
编辑:
要生成实际的随机数,请使用rvs()方法,该方法与scipy.stats模块中的每个随机分布一起提供。例如:
rvs()
>>> stats.binom(20,0.1,loc=-2).rvs(10) array([-2, 0, 0, 1, 1, 1, -1, 1, 2, 0])
如果你想要一个以0为中心的“离散化”正态分布,你所做的一切都很好。如果你想要整数值,你应该在减法之前取整n*p。在
n*p
但是当n变大并且p远离0或1时,limit of the binomial distribution is just the normal distribution会变大。既然除了某些值,n*p不是一个整数,为什么不直接使用正态分布呢?在
n
p
scipy.stats
模块中实现的概率分布允许您通过在构造函数中指定loc
关键字来任意移动分布。要获得均值偏移接近0的二项分布,可以调用(请确保对离散分布的
loc
使用整数值。)下面是一个例子:
^{pr2}$编辑:
要生成实际的随机数,请使用
rvs()
方法,该方法与scipy.stats
模块中的每个随机分布一起提供。例如:如果你想要一个以0为中心的“离散化”正态分布,你所做的一切都很好。如果你想要整数值,你应该在减法之前取整
n*p
。在但是当
n
变大并且p
远离0或1时,limit of the binomial distribution is just the normal distribution会变大。既然除了某些值,n*p
不是一个整数,为什么不直接使用正态分布呢?在相关问题 更多 >
编程相关推荐