首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >分裂正态分布

分裂正态分布
EN

Stack Overflow用户
提问于 2019-01-30 22:16:41
回答 1查看 518关注 0票数 2

在给定具有上下限误差的平均值的情况下,计算分裂正态分布的最佳方法是什么?

到目前为止,我有:

代码语言:javascript
复制
from random import choice, gauss
def random_split_normal(mu: float, upper_sigma: float, lower_sigma:int) -> float:
    return abs(gauss(0.0, 1.0)) * choice([upper_sigma, -lower_sigma]) + mu

我多次调用它来生成一个数组:

代码语言:javascript
复制
random_array = []
for _ in range(1000):
    random_array.append(random_split_normal(1.0, 2.0, 1.0))

在制作random_array的直方图时,会产生以下结果

我想知道随机使用upper_sigmalower_sigma是不是正确的方法?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-30 22:52:32

您的解决方案在数学上是等价的,但效率较低,因为您不必要地应用abs()和choice(),其中您只需查看gauss()的符号。

这应该接近于定义。我还重新定义了sigma,使之与我们通常的数字线方向一致(左侧为负无穷大)。

代码语言:javascript
复制
def random_split_normal(mu: float, lower_sigma: float, upper_sigma: float) -> float:
    z = gauss(0, 1)
    return mu + z * (lower_sigma if z < 0 else upper_sigma)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54442632

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档