Иллюстрированный самоучитель по Java

Получение случайных чисел. Копирование массивов.

Получить случайное неотрицательное число, строго меньшее единицы, в виде типа double можно статическим методом random () из класса java.lang.Math.

При первом обращении к этому методу создается генератор псевдослучайных чисел, который используется потом при получении следующих случайных чисел.

Более серьезные действия со случайными числами можно организовать с помощью методов класса Random из пакета java.utii. В классе два конструктора:

  • Random (long seed) – создает генератор псевдослучайных чисел, использующий для начала работы число seed;
  • Random() – выбирает в качестве начального значения текущее время.

Создав генератор, можно получать случайные числа соответствующего типа методами nextBoolean(), nextDouble(), nextFloat(), nextGau.ssian(), next int(), nextLong(), nextint(int max) или записать сразу последовательность случайных чисел в заранее определенный массив байтов bytes методом nextBytes(byte[] bytes).

Вещественные случайные числа равномерно располагаются в диапазоне от 0.0 включительно до 1.0 исключительно. Целые случайные числа равномерно распределяются по всему диапазону соответствующего типа за, одним исключением: если в аргументе указано целое число max, то диапазон случайных чисел будет от нуля включительно до max исключительно.

Копирование массивов

В классе System из пакета java.iang есть статический метод копирования массивов, который использует сама исполняющая система Java. Этот метод действует быстро и надежно, его удобно применять в программах. Синтаксис:

static void arraycopy(Object src, int src_ind, Object dest, int dest_ind, int count)

Из массива, на который указывает ссылка src, копируется count элементов, начиная с элемента с индексом src_ind, в массив, на который указывает ссылка dest, начиная с его элемента с индексом dest_ind.

Все индексы должны быть заданы так, чтобы элементы лежали в массивах, типы массивов должны быть совместимы, а примитивные типы обязаны полностью совпадать. Ссылки на массивы не должны быть равны null.

Ссылки src и dest могут совпадать, при этом для копирования создается промежуточный буфер. Метод можно использовать, например, для сдвига элементов в массиве. После выполнения:

int[] arr = {5, 6, 1, 8, 9, 1, 2, 3, 4, 5, -3, -7};
System.arraycopy(arr, 2, arr, 1, arr.length -2);

…получим:

(5, 7, 8, 9, 1, 2, 3, 4, 5, -3, -7, -7}.
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.