Java 根据箱线图生成随机数

Java generate random number based on boxplot

我正在为 java(可以是 java-8)搜索能够生成随机样本(最好使用固定种子进行确定性测试)的方法或库关于构成箱线图的数字。

想象一下箱线图:

      ----------
|-----|  |     |-----------|
      ----------
min   A avg    B          max

你现在的数字是 minAavgBmax。该方法或库应生成一个受这些规则约束的随机数。

假设 minamedianbmax 值分隔分布的四分位数 (http://en.wikipedia.org/wiki/Quartile):

static public double next(Random rnd, double median, double a, double b, double min, double max) {
    double d = -3;
    while (d > 2.698 || d < -2.698) {
        d = rnd.nextGaussian();
    }
    if (Math.abs(d) < 0.6745) {
        if (d < 0) {
            return median - (median - a) / 0.6745 * (-d);  // 2nd quartile
        } else {
            return median + (b - median) / 0.6745 * d;  // 3rd quartile
        }
    } else {
        if (d < 0) {
            return a - (a - min) / (2.698 - 0.6745) * ((-d) - 0.6745);  // 1st quartile
        } else {
            return b + (max - b) / (2.698 - 0.6745) * (d - 0.6745);  // 4th quartile
        }
    }
}

在这里,我发现 d = rnd.nextGaussian() 进入了哪个四分位数,并将该值投影到给定箱线图的相应部分。