美文网首页
高斯分布的生成

高斯分布的生成

作者: 天之見證 | 来源:发表于2018-12-26 00:31 被阅读0次

1. 如何生成高斯分布?

在java8中的实现采用了 Marsaglia polar method (Box–Muller的一种形式), 具体理论如下:

  1. 随机变量 U,V 服从(-1,1) 的均匀分布
  2. 计算 S=U^2+V^2
  3. 如果 S \ge 1, 接着计算, 否则转4
  4. X=U\sqrt{\frac{-2\ln S}{S}},Y=V\sqrt{\frac{-2\ln S}{S}}, X,Y 独立,并且都符合高斯正态分布

代码片段:

// Random.java
private static final double DOUBLE_UNIT = 0x1.0p-53; // 1.0 / (1L << 53)
public double nextDouble() {
    return (((long)(next(26)) << 27) + next(27)) * DOUBLE_UNIT;
}

private double nextNextGaussian;
private boolean haveNextNextGaussian = false;

synchronized public double nextGaussian() {
    // See Knuth, ACP, Section 3.4.1 Algorithm C.
    if (haveNextNextGaussian) {
        haveNextNextGaussian = false;
        return nextNextGaussian;
    } else {
        double v1, v2, s;
        do {
            v1 = 2 * nextDouble() - 1; // between -1 and 1
            v2 = 2 * nextDouble() - 1; // between -1 and 1
            s = v1 * v1 + v2 * v2;
        } while (s >= 1 || s == 0);
        double multiplier = StrictMath.sqrt(-2 * StrictMath.log(s)/s);
        nextNextGaussian = v2 * multiplier;
        haveNextNextGaussian = true;
        return v1 * multiplier;
    }
}

之所以是这种方法大致的来源是:

单位圆 --> 均匀分布 --> 指数分布 --> 自由度为2的卡方分布 --> 反推出2个随机变量的表达式

2. Box–Muller 变换

Box–Muller transform 可以分为2种形式:

1. 基础形式

U_1,U_2 服从 (0,1) 的均匀分布,则:

Z_0=\sqrt{-2\ln U_1}\cos(2\pi U_2),Z_1=\sqrt{-2\ln U_1}\sin(2\pi U_2), 独立并且服从标准正态分布

2. 极坐标形式

BoxMullerTransformUsingPolarCoordinates

U_1,U_2 服从 (0,1) 的均匀分布,U_1\rightarrow s, \; U_2\rightarrow \theta/(2\pi):
Z_0=\sqrt{-2\ln U_1}\cos(2\pi U_2)=\sqrt{-2\ln s}(\frac{u}{\sqrt{s}})=u\sqrt{\frac{-2\ln s}{s}} \\ Z_1=\sqrt{-2\ln U_1}\sin(2\pi U_2)=\sqrt{-2\ln s}(\frac{v}{\sqrt{s}})=v\sqrt{\frac{-2\ln s}{s}}
Z_0,Z_1 独立并且服从标准正态分布

这种方法避免了\sin,\cos 的计算

s=R^2=u^2+v^2, 当s=0\,or\,s\ge 1 去掉算得的 u,v, 所以也是一种 rejection sampling

ref:

  1. wiki上的理论链接
  2. 独立性证明
  3. https://en.wikipedia.org/wiki/Marsaglia_polar_method#Theoretical_basis
  4. 从高斯分布反推到均匀分布

相关文章

网友评论

      本文标题:高斯分布的生成

      本文链接:https://www.haomeiwen.com/subject/itlclqtx.html