Стохастическая матрица (Markov chain)

119
11 августа 2019, 21:10

у меня произошла ошибка. Мне нужно создать стохастическую матрицу, например:

input:
0.1 0.9 0.0 // 0.1 + 0.9 + 0.0 = 1
0.5 0.4 0.1 
0.3 0.4 0.3 

Матрица стохастическая, потому что при подсчете строк будет 1.

Моя программа работает через раз.

Моя код:

public class maticeStochaticka {
private static Scanner sc = new Scanner(System.in);
public static boolean pocetStochastic(double rozmerMatici[][]) {
    for (int i = 0; i < rozmerMatici.length; i++) {
        double sum = 0;
        for (int j = 0; j < rozmerMatici[i].length; j++)
            sum = sum + rozmerMatici[i][j];
        if (sum != 1)
            return false;

    }
    return true;
}
public static void main(String[] args) {
    System.out.println("Задайте размер матрицы: ");
    int rozmerMaticiAlfa = sc.nextInt();
    double [][] rozmerMatici = new double[rozmerMaticiAlfa][rozmerMaticiAlfa];
    System.out.println("Задайте матрицу ");
    for (int i = 0; i < rozmerMaticiAlfa; i++) {
        for (int j = 0; j < rozmerMaticiAlfa; j++) {
            rozmerMatici[i][j] = sc.nextFloat();
        }
    }
    if (pocetStochastic(rozmerMatici)) {
        System.out.println("матрица стохастическая");
    } else {
        System.out.println("матрица не стохастическая");
    }
  }
}

Прошу помощи.

Answer 1

double имеет погрешности при операциях, поэтому его лучше сравнивать не при помощи оператора сравнения "==", а через проверку значения разницы.

public static boolean pocetStochastic(double rozmerMatici[][]) {
for (int i = 0; i < rozmerMatici.length; i++) {
    double sum = 0;
    for (int j = 0; j < rozmerMatici[i].length; j++)
        sum = sum + rozmerMatici[i][j];
    if (Math.abs(sum - 1.0d) > 0.00001d)
        return false;
}
return true;

}

READ ALSO
Перехват трафика TCP

Перехват трафика TCP

От моего вопроса вытекает следующий вопрос: можно ли на андроиде перехватить TCP трафик? На устройстве нету TCPЯ не могу создать VPN и пересылать...

95
Android Connect MySQL

Android Connect MySQL

Надо подключится к MySQL в Android Studio и создать таблицу вот так я пытаюсь это сделать:

115
Аутентификация в ActiveDirectory с помощью SpringSecurity

Аутентификация в ActiveDirectory с помощью SpringSecurity

Друзья, помогите, стоит задача настроить аутентификацию в ActiveDirectory с помощью Spring SecurityЯ не обладаю большим опытом в Spring Security и ActiveDirectory

124