我想生成N个随机双打,它们的总和是1。
此外,N个随机双打应服从正态分布。
我理解nextGuassian()
中的Random
可以生成正常的分配号码。
但如何实现上述目标?
答案 0 :(得分:2)
double[] generateNRandomDoublesWhichSumToOne(Random random, int n) {
if (random == null) throw new NullPointerException();
if (n <= 0) throw new IllegalArgumentException();
double[] values = new double[n];
double sum = 0;
for (int i = 0; i < n; ++i) {
values[i] = random.nextGaussian();
sum += values[i];
}
for (int i = 0; i < n; ++i) {
values[i] /= sum;
}
return values;
}