我有一些输入,例如x1,x2,x3。我必须将每个输入乘以一定的权重并相加。像alpha * x1 + beta * x2 + gamma * x3。 x1,x2,x3的范围是0到1。 权重范围也是0到1。 我想让某种算法赋予较高的权重,而赋予较低的权重。
如果x1在三个值中具有较高的值,则可以给x1赋予60%的体重年龄。 x2具有第二个最高值30%,最后一个值20%完成100%。 下面给出了到目前为止我尝试过的内容,但是值是静态的,我分别将权重0.6设置为最高值0.3和0.2。有什么方法可以根据输入值动态分配权重?
if (x1>x2 and x1>x3 ) {
if (x2>x3) {
sum= 0.6*x1 + 0.3*x2 + 0.2*x3;
}
if (x3>x2) {
sum= 0.6*x1 + 0.2*x2 + 0.3*x3;
}
}
if (x2>x3 and x2>x1 ) {
if (x1>x3) {
sum= 0.3*x1 + 0.6*x2 + 0.2*x3;
}
if (x3>x1) {
sum= 0.2*x1 + 0.6*x2 + 0.3*x3;
}
}
if (x3>x2 and x3>x1 ) {
if (x2>x1) {
sum= 0.2*x1 + 0.3*x2 + 0.6*x3;
}
if (x1>x2) {
sum= 0.3*x1 + 0.2*x2 + 0.6*x3;
}
}
答案 0 :(得分:0)
您是说但值是静态的。
如果那样的话意味着您对值进行了硬编码,例如:
double x1 = 1.0;
double x2 = 2.0;
double x3 = 3.0;
然后解决方案是通过用户输入获取它们:
Scanner scanner = new Scanner(System.in);
System.out.print("x1=");
double x1 = scanner.nextDouble();
System.out.print("x2=");
double x2 = scanner.nextDouble();
System.out.print("x3=");
double x3 = scanner.nextDouble();
scanner.close();
然后您进行所有计算。