Java: придание большего веса более высоким значениям среди входных данных - PullRequest
0 голосов
/ 04 ноября 2018

У меня есть некоторые входы, скажем, х1, х2, х3. Я должен умножить каждый вход с некоторым весом и добавить их. Как альфа * х1 + бета * х2 + гамма * х3. Диапазон значений x1, x2, x3 составляет от 0 до 1. Диапазон веса также от 0 до 1. Я хочу, чтобы какой-то алгоритм придавал больший вес более высоким значениям и меньший вес - более низким значениям.

Например, если x1 имеет более высокое значение среди трех, тогда 60-процентный возраст может быть присвоен x1. 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;
    }
}

1 Ответ

0 голосов
/ 04 ноября 2018

Вы говорите , но значения являются статическими .
Если под этим вы подразумеваете, что вы жестко закодировали такие значения, как:

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

Затем вы делаете все расчеты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...