我想获得三个变量的值的明确列表,三个变量的总和为1,以0.05为增量

问题描述 投票:0回答:1

我想要的是找到一个不同的小数列表,如果我使用三个变量,并且每个变量可以增加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

依此类推,我想你明白了。

math combinations equation-solving
1个回答
0
投票

首先要意识到的是,由于它们的总和为1,因此var3var2 + var1的函数。所以这里确实有两个变量。

您可以通过盲目循环var1var2并保留值来强行使用此方法:

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);
        }
    }
}

现在这到处都是低效率,希望您可以发现并优化它,但这应该是一种有效的方法。请注意,我使用了整数,因此最终没有出现奇怪的浮点舍入错误。相应地修改输出。

© www.soinside.com 2019 - 2024. All rights reserved.