Давайте рассмотрим этот код.
Начнем с создания экземпляра SecureRandom(). Согласно Javadocs, это позволит нам генерировать
криптографически сильных случайных чисел
означает, что они будут очень случайно. Читайте о pseudorandom number generators, если вы хотите знать, чего это избегает.
SecureRandom secureRandom = new SecureRandom();
Теперь мы создадим массив из семи Интс, первоначально установлен в 0
.
Мы будем обрабатывать содержимое цикла for пять раз.
for(int i=0; i<5;i++)
Начало цикла получает случайное число в диапазоне от 1 до 6 включительно, и присваивает его random
.
int random = 1+ secureRandom.nextInt(6);
Теперь мы увеличиваем массив в случайном положении. Обратите внимание, что позиция 0
никогда не обновляется, так как она не находится в диапазоне возможных значений для random
.
В конце каждого цикла мы печатаем содержимое массива в std-out, что позволяет нам видеть, что цикл увеличивает каждый элемент. Вот почему вы видите пять отпечатков всего массива. Arrays.toString преобразует массив в разделенную запятыми версию, которую вы видите.
System.out.println(Arrays.toString(array));
EDIT:
Из того, что я понимаю в ваших комментариях, вы хотели бы знать, почему значения в обновлении массива по 1 вместо стать случайным числом.
Массив представлен индексами следующим образом:
array: { array[0], array[1], array[2], array[3], array[4], array[5], array[6] }
Когда доступ к массиву с array[random]
, мы используем random
в качестве индекса. Он будет смотреть на значение случайного и сопоставить его с тем же номером в [ ]
выше. Затем, так как вы говорите 1 + array[random]
, он только изменяет значение в этой позиции в массиве на 1
.
EDIT x2: Если вы хотите другой выход, вам потребуется содержимое для петли быть:
int random = 1 + secureRandom.nextInt(6);
int anotherRandom = 1 + secureRandom.nextInt(6);
array[random] = anotherRandom;
System.out.print(...);
Это установит значение (почти) случайное положение для случайной величины в пределах того же диапазона возможных индексов.
Я не понимая, что ваш вопрос. –
Я предлагаю вам выполнить код в своем отладчике, чтобы увидеть, что именно делает каждая строка кода. –
Вы спрашиваете, как работает 'array [random]'? –