有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

统计Java基于箱线图生成随机数

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

因此,想象一下拥有箱线图:

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

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


共 (1) 个答案

  1. # 1 楼答案

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