我有一些输入,比如x1、x2、x3。我必须将每个输入乘以一些权重,然后将它们相加。就像阿尔法*x1+贝塔*x2+伽马*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;
}
}
您说的是,但值是静态的
如果您的意思是对值进行硬编码,如:
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();
然后你做所有的计算。