Java гистограмма из случайно сгенерированных чисел - PullRequest
0 голосов
/ 21 ноября 2018

Я играю и изучаю немного Java, поэтому я действительно новичок e ... Моя проблема - я генерирую 5 случайных чисел от 1 до 5. Затем моя программа вычисляетСколько раз число 1, номер 2, номер 3, номер 4 и номер 5 сгенерированы в этих рандомах.

public static void main(String[] args) {
    Random rand = new Random();
    int[] array = new int[5];
    int randomNumber;
    int i;
    int p1 = 0;
    int p2 = 0;
    int p3 = 0;
    int p4 = 0;
    int p5 = 0;
    System.out.println("Random numbers:");
    for (i = 0; i < 5; i++) {
        randomNumber = rand.nextInt(5) + 1;
        System.out.print(randomNumber);
        if (i < 4) {
            System.out.print(", ");
        }

        if (randomNumber == 1) {
            array[0] = p1++;
        } else if (randomNumber == 2) {
            array[1] = p2++;
        } else if (randomNumber == 3) {
            array[2] = p3++;
        } else if (randomNumber == 4) {
            array[3] = p4++;
        } else if (randomNumber == 5) {
            array[4] = p5++;
        }
    }
    //výpis četnosti
    System.out.println();
    System.out.println();
    System.out.println("Histogram: "); 

    for (i = 0; i < array.length; i++) {
        System.out.println("Number " + (i + 1) + ": " + array[i] + ".");
    }
}

Программа действует странно для моего понимания.Выходные данные всегда отображают реальное количество чисел, содержащихся в сгенерированном radom пакете, точно минус 1, и я действительно не понимаю, почему.... Так что, если трижды сгенерировать число 3 из генератора случайных чисел, моя программа покажет номер три только "2".

Я был бы очень благодарен за помощь в этом.Спасибо.

Ответы [ 2 ]

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

Вы увеличиваете количество переменных.Итак, то, что вы присваиваете своему массиву int при первом подсчете, равно 0.

Вместо этого вы можете упростить это, просто увеличивая целые числа в вашем массиве следующим образом:

public static void main(String[] args) {
    Random rand = new Random();
    int[] array = new int[5];
    int randomNumber;
    int i;

    System.out.println("Random numbers:");
    for (i = 0; i < 5; i++) {
        randomNumber = rand.nextInt(5) + 1;
        System.out.print(randomNumber);
        if (i < 4) {
            System.out.print(", ");
        }

        array[randomNumber - 1]++;
    }
    //výpis četnosti
    System.out.println("\n\nHistogram: "); 

    for (i = 0; i < array.length; i++) {
        System.out.println("Number " + (i + 1) + ": " + array[i] + ".");
    }
}

Запуск этого дает мне следующий вывод:

Random numbers:
2, 3, 5, 3, 2

Histogram: 
Number 1: 0.
Number 2: 2.
Number 3: 2.
Number 4: 0.
Number 5: 1.
0 голосов
/ 21 ноября 2018
array[0] = p1++;

Это то же самое, что и

array[0] = p1;
p1 = p1 + 1;

Надеюсь, этого достаточно, чтобы вы обнаружили вашу проблему.

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