【问题标题】:Sample from half a Gaussian distribution来自半高斯分布的样本
【发布时间】:2013-04-20 08:52:14
【问题描述】:

假设n = N(0,1) 是一个正态分布。在 MATLAB 中,当使用randn(1,1) 函数时,会从n 中提取样本。

但是,我有一个不同的目标:我想从上(或下)半分布中采样,即从左尾到均值(或从均值到右尾)的一半。

这样做的一个虚拟方法是:

while sample > mean
    sample from gaussian
end

但是,由于我必须在代码中提取大量样本,因此该解决方案将不受欢迎。有没有更聪明的方法来提取这些样本,而不涉及循环?

【问题讨论】:

    标签: matlab statistics distribution random-sample normal-distribution


    【解决方案1】:

    鉴于您的高斯在零附近对称,您可以使用

    sample = randn(n, 1); 
    sample(sample < 0) = -sample(sample < 0);
    

    请注意,这只适用于高斯均值为零的情况。

    对于任意均值的高斯,你可以使用:

    sample(sample < mean(sample)) = -sample(sample < mean(sample)) + 2*mean(sample);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-07
      • 2015-02-13
      • 1970-01-01
      • 2012-09-12
      • 1970-01-01
      • 2018-08-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多