Java 根据箱线图生成随机数
Java generate random number based on boxplot
我正在为 java(可以是 java-8)搜索能够生成随机样本(最好使用固定种子进行确定性测试)的方法或库关于构成箱线图的数字。
想象一下箱线图:
----------
|-----| | |-----------|
----------
min A avg B max
你现在的数字是 min
、A
、avg
、B
和 max
。该方法或库应生成一个受这些规则约束的随机数。
假设 min
、a
、median
、b
、max
值分隔分布的四分位数 (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()
进入了哪个四分位数,并将该值投影到给定箱线图的相应部分。
我正在为 java(可以是 java-8)搜索能够生成随机样本(最好使用固定种子进行确定性测试)的方法或库关于构成箱线图的数字。
想象一下箱线图:
----------
|-----| | |-----------|
----------
min A avg B max
你现在的数字是 min
、A
、avg
、B
和 max
。该方法或库应生成一个受这些规则约束的随机数。
假设 min
、a
、median
、b
、max
值分隔分布的四分位数 (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()
进入了哪个四分位数,并将该值投影到给定箱线图的相应部分。