Java根据boxplot生成随机数

时间:2015-03-10 09:31:34

标签: java statistics boxplot random-sample

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

想象一下盒子图:

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

现在您可以使用数字minAavgBmax。方法或库应该生成一个与这些规则绑定的随机数。

1 个答案:

答案 0 :(得分:3)

假设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()进入,并将值投影到给定的boxplot的相应部分。