Случайные элементы массива java

Java. Класс Random. Генерирование случайных чисел

Класс Random . Генерирование случайных чисел. Конструкторы класса. Список методов. Методы получения одиночных случайных чисел

Поиск на других ресурсах:

1. Класс Random . Общие сведения. Конструкторы класса

Класс Random используется для создания случайных чисел. Для использования возможностей (методов) класса Random в начале приложения нужно подключить модуль java.util.Random следующим образом

import java.util.Random;

Конструкторы класса создают новый генератор случайных чисел. Для создания генератора используются следующие основные конструкторы

Random() Random(int seed)
  • seed – начальное число, в отношении которого генерируется последовательность случайных чисел. Это число поддерживается методом next() , генерирующим псевдослучайное число (pseudorandom number).

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

Random rnd1 = new Random(122); Random rnd2 = new Random();
  • r1 , r2 – экземпляры, которые будут генерировать последовательности случайных чисел;
  • 122 – целое число, с которого начинается формирование следующих случайных чисел. Здесь можно задавать любое другое целое число (55, 101… и т.п.).

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

2. Базовые методы класса Random . Список

Класс Random содержит ряд методов для генерирования случайных чисел:

  • setSeed() – устанавливает исходное значение, которое используется в качестве основы для генерирования случайных чисел;
  • doubles() – формирует данные типа double в виде потока случайных чисел;
  • ints() – формирует данные типа int в виде потока случайных чисел;
  • longs() – формирует поток данных типа long, содержащий случайные числа;
  • nextBoolean() – возвращает случайное значение типа boolean ;
  • nextBytes() – возвращает массив случайных чисел типа byte[] ;
  • nextDouble() – возвращает случайное число типа double ;
  • nextFloat() – возвращает случайное число типа float ;
  • nextGaussian() – возвращает псевдослучайное значение на основе распределения Гаусса;
  • nextInt() – возвращает случайное число типа int ;
  • nextLong() – возвращает случайное число типа long .
3. Метод setSeed(int) . Установить начальное значение

Метод setSeed() позволяет задавать исходное значение, на основе которого формируется последовательность случайных чисел. В последовательности каждое последующее число зависит от предыдущего. Согласно документации сигнатура метода setSeed() следующая

void setSeed(long seed);

Создание экземпляра класса Random с помощью конструктора с параметром

Random rnd = new Random(seed);
Random rnd = new Random(); rnd.setSeed(seed);

В примере создается поток данных, содержащих 10 случайных чисел типа double . Сначала начальное значение (seed) задается равным 122, затем оно переопределяется новым значением 150 с помощью метода setSeed() .

import java.util.Iterator; // нужно для использования класса Iterator<> import java.util.Random; // нужно для использования класса Random import java.util.stream.DoubleStream; // нужно для использования класса DoubleStream public class MathFunctions <  public static void main(String[] args) < // 1. Создать поток на основе ядра 122 Random r1 = new Random(122); // // 2. Установить новое ядро - вызов метода setSeed() r1.setSeed(150); // 3. Получить поток из 10 чисел типа double DoubleStream ds1 = r1.doubles(10); // 4. Получить итератор на поток ds1 Iterator it1 = ds1.iterator(); // 5. Вывести в цикле 10 случайных чисел из потока ds1 System.out.println("Stream ds1:"); while (it1.hasNext()) < System.out.println(it1.next()); > > >
Stream ds1: 0.7436883394251182 0.16523214952520537 0.6551835693241186 0.46667154390807386 0.02763677886761373 0.7815907963879736 0.23597049719139052 0.3714539686578885 0.22142228403292508 0.5329685061913043
4. Метод nextBoolean() . Получить случайное значение типа boolean

Метод nextBoolean() позволяет получить случайное значение типа boolean . Согласно документации объявления метода в классе Random следующее

public boolean nextBoolean();
import java.util.Random; public class MathFunctions <  public static void main(String[] args) < // 1. Создать поток на основе произвольного исходного значения Random r1 = new Random(); // 2. Получить случайное значение типа boolean boolean b1 = r1.nextBoolean(); System.out.println("b1 color: #333300;">⇑ 
5. Метод nextDouble(). Получить случайное число типа double. Формирование чисел в заданных пределах

Метод nextDouble() возвращает случайное число типа double. Значение числа лежит в пределах [0.0; 1.0[ – значение 0.0 включительно, значение 1.0 исключительно. Согласно документации объявление метода следующее

public double nextDouble();

В примере сначала формируется массив из 10 чисел типа double . Затем этот массив выводится на экран. Значение каждого числа типа double лежит в пределах [min; max) где min и max вводятся с клавиатуры.

import java.util.Random; // нужно для использования класса Random import java.util.Scanner; // нужно для использования класса Scanner public class MathFunctions <  public static void main(String[] args) < // 1. Создать поток на основе произвольного исходного значения Random rnd = new Random(); // 2. Создать массив из 10 элементов типа double  double[] AD = new double[10]; // 3. Задать с клавиатуры нижнюю и верхнюю границу случайных чисел double min, max; Scanner input = new Scanner(System.in); // 3.1. Ввести нижнюю границу System.out.print("min color: #008000;"> // 3.2. Ввести верхнюю границу System.out.print("max color: #008000;"> // 4. Заполнить массив AD случайными числами в пределах [min; max] double value; for (int i=0; i // Получить случайное число в пределах [0.0; 1.0) value = rnd.nextDouble(); // Откорректировать пределы числа value как [min; max] AD[i] = min + value * (max - min); > // 5. Вывести массив AD System.out.println("\nAD:"); for (int i=0; iout.println(AD[i]); > >
min = 2.5 max = 3.8 AD: 2.8359371330191094 2.758080086113864 3.573990757948374 3.3258831628588483 3.4857770403575628 3.659913452046651 3.218060124836948 3.032705795552893 3.7447915830146092 2.791155939366058
6. Метод nextFloat() . Получить случайное число типа float

Метод nextFloat() возвращает случайное число типа float . Сигнатура метода следующая

float nextFloat();

Метод возвращает число, которое находится в диапазоне [0.0f; 1.0f).

В примере формируется массив из 10 случайных чисел типа float . Числа лежат в диапазоне [-5; 5).

import java.util.Random; // нужно для использования класса Random import java.util.Scanner; // нужно для использования класса Scanner public class MathFunctions <  public static void main(String[] args) < // 1. Создать поток на основе произвольного исходного значения Random rnd = new Random(); // 2. Создать массив из 10 элементов типа float  float[] AF = new float[10]; // 3. Задать с клавиатуры нижний и верхний предел случайных чисел float min, max; Scanner input = new Scanner(System.in); // 3.1. Ввести нижнюю границу System.out.print("min color: #008000;"> // 3.2. Ввести верхнюю границу System.out.print("max color: #008000;"> // 4. Заполнить массив AF случайными числами в пределах [min; max] float value;  for (int i=0; i // Получить случайное число в пределах [0.0; 1.0) value = rnd.nextFloat(); // Откорректировать пределы числа value как [min; max] AF[i] = min + value * (max - min); > // 5. Вывести массив AF System.out.println("\nAF:");  for (int i=0; iout.println(AF[i]); > >
min = -5 max = 5 AF: -0.4368925 -4.857518 -1.9285429 -1.3483305 -1.2607784 3.6692915 3.8821516 4.8362236 3.9554806 0.30514526
7. Метод nextGaussian() . Получить псевдослучайное значение на основе распределения Гаусса

Метод nextGaussian() возвращает значение типа double , полученное на основе распределения Гаусса со средним значением 0.0 и стандартным отклонением 1.0. Согласно документации объявления метода в классе Random следующее

public double nextGaussian();
import java.util.Random; public class MathFunctions <  public static void main(String[] args) < // 1. Создать поток на основе произвольного исходного значения Random rnd = new Random(); // 2. Создать массив AD из 10 элементов типа double // в котором элементы получаются на основе распределения Гаусса  double[] AD = new double[10]; // 3. Заполнить массив AD случайными числами // с использованием метода nextGaussian() for (int i=0; i // 4. Вывести массив AD на экран System.out.println("Array AD:");  for (int i=0; iout.println(AD[i]+" "); > >
Array AD: 0.8462285437123548 1.1084379848996055 0.5552376880883958 -1.0787586788543444 0.9944069427425211 0.8645907102307332 -1.449023177851094 1.2567221522577043 -1.073685704004384 -0.8709705603926711
8. Метод nextInt() . Получить случайное число типа int . Получить целое число в заданных пределах

Метод nextInt() возвращает целое случайное число типа int . Число может быть как положительным, так и отрицательным. Согласно документации объявление метода следующее

public int nextInt();

В примере с помощью метода nextInt() формируется массив случайных чисел. Каждое число имеет значение в пределах [min; max] . Для формирования числа выведена формула. В конце массив сформированных чисел выводится на экран. Для ввода цифр с клавиатуры используются средства класса Scanner .

import java.util.Random; // нужно для использования класса Random import java.util.Scanner; // нужно для использования класса Scanner public class MathFunctions <  public static void main(String[] args) < // 1. Создать поток на основе произвольного исходного значения Random rnd = new Random(); // 2. Создать массив из 10 элементов типа int  int[] AI = new int[10]; // 3. Задать с клавиатуры нижний и верхний предел случайных чисел  int min, max; Scanner input = new Scanner(System.in); // 3.1. Ввести нижнюю границу System.out.print("min color: #008000;"> // 3.2. Ввести верхнюю границу System.out.print("max color: #008000;"> // 4. Заполнить массив AI случайными числами в пределах [min; max]  for (int i=0; iabs(rnd.nextInt()) % (max - min + 1); // 5. Вывести массив System.out.println("\nAI:"); for (int i=0; iout.println(AI[i]); > >
min = 1 max = 10 AI: 7 10 5 5 8 2 1 4 9 5
9. Метод nextLong() . Получить случайное число типа long

Метод nextLong() возвращает случайное число типа long . Согласно документации Java объявление метода выглядит следующим образом

public long nextLong();
import java.util.Random; public class MathFunctions <  public static void main(String[] args) < // 1. Создать поток на основе произвольного исходного значения Random rnd = new Random(); // 2. Создать массив AL из 10 элементов типа long  long[] AL = new long[10]; // 3. Заполнить массив AL случайными числами // с использованием метода nextLong()  for (int i=0; i // 4. Вывести массив AL на экран System.out.println("Array AL:");  for (int i=0; iout.println(AL[i]+" "); > >
Array AL: 7366919727266127728 -979699283376638676 5249017576319962809 -4343155317134154076 6027817083452027820 -2862223376222694775 1510496055653313188 5133621007379261861 5000401929540016138 5865861847345821978

Связанные темы

Источник

Читайте также:  Как объединить ячейки css grid
Оцените статью