我想要的是找到一个不同的小数列表,如果我使用三个变量,并且每个变量可以增加0.05,那么它们加到1。
值表看起来像这样:
Var1 Var2 Var3 Total
0.0 0.05 0.95 1
0.20 0.40 0.40 1
0.15 0.75 0.10 1
0.50 0.25 0.25 1
0.80 0.20 0.00 1
依此类推,我想你明白了。
首先要意识到的是,由于它们的总和为1,因此var3
是var2 + var1
的函数。所以这里确实有两个变量。
您可以通过盲目循环var1
和var2
并保留值来强行使用此方法:
List<int[]> sets = new ArrayList<>();
for(int var1 = 0; var1 <= 100; var1 += 5) {
for(int var2 = 0; var2 <= 100; var2 += 5) {
int var3 = 100 - (var1 + var2);
if(var1 + var2 + var3 == 100 && (var1 != var2) && (var1 != var3) && (var2 != var3)) {
int[] set = new int[] { var1, var2, var3 };
sets.add(set);
}
}
}
现在这到处都是低效率,希望您可以发现并优化它,但这应该是一种有效的方法。请注意,我使用了整数,因此最终没有出现奇怪的浮点舍入错误。相应地修改输出。