Существует несколько способов генерации случайного (псевдослучайного) числа:
- Использование метода random() из класса математических функций Math, находящемся в пакете java.lang.
- Использование метода random() из класса Random, находящемся в пакете java.util.Random.
- Использование генератора случайных чисел класса SecureRandom, предназначенного для целей криптографии и, находящегося в пакете java.security.SecureRandom (здесь не рассматривается).
Рассмотрим методы генерации случайных чисел.
Класс Math. Метод random()
Метод random() класса Math возвращает псевдослучайное число типа double в диапазоне 0 ≤ Math.random() < 1.
Пример 1. Несколько случайных чисел
1.public static void main(String[] args) {
2.System.out.println("Cлучайное число № 1: " + Math.random());
3.System.out.println("Случайное число № 2: " + Math.random());
4.System.out.println("Случайное число № 3: " + Math.random());
5.}
Результат.
Случайное число № 1: 0.9161994380531232
Случайное число № 2: 0.24340742865928744
Случайное число № 3: 0.9783627451986034
Пример 2. Случайное число x в диапазоне a ≤ x ≤ b
Для генерации целого случайного числа x в заданном диапазоне a ≤ x ≤ b, обычно используется следующая зависимость:
x = a + (int)(Math.random()*((b - a) + 1)).
Получим случайное число x в диапазоне: 10 ≤ x ≤ 20 (a=10, b=20).
1.int a=10;
2.int b=20;
3.int x= a + (int)(Math.random() * ((b - a) + 1));
4.System.out.println("Случайное число x: " + x);
Результат.
Случайное число x: 19
Класс Random. Метод random()
Это наиболее часто используемый класс для генерации псевдослучайный чисел с равномерной функцией распределения. Имеется метод nextGaussian(), который моделирует функцию нормального распределения.
Основными методами этого класса являются:
- int nextInt() - возвращает следующее случайное значение ix типа int в диапазоне -2147483648 ≤ ix < 2147483647
- int nextInt(int n) - возвращает следующее случайное значение ix типа int в диапазоне 0 ≤ ix < n
- float nextFloat() - возвращает следующее случайное значение fx типа float в диапазоне 0.0 ≤ fx < 1.0
- double nextDouble() - возвращает следующее случайное значение dx типа double в диапазоне 0.0 ≤ dx < 1.0
- boolean nextBoolean() - возвращает следующее случайное значение типа boolean
Для получения случайных чисел необходимо:
- Подключить библиотеку случайных чисел. Пишем до определения класса.
import java.util.Random;
- В классе создать объект rand случайных чисел
Random rand = new Random();
- Далее использовать необходимые методы объекта rand.
Пример 1. Несколько случайных чисел разных типов.
01.public static void main(String[] args) {
02.Random rand = new Random();
03.int ix = rand.nextInt();
04.double dx = rand. nextDouble();
05.float fx = rand.nextFloat();
06.boolean bx = rand.nextBoolean();
07.System.out.println("Случайное число ix: " + ix);
08.System.out.println("Случайное число dx: " + dx);
09.System.out.println("Случайное число fx: " + fx);
10.System.out.println("Случайное число bx: " + bx);
Результат.
Случайное число ix: 1438841988
Случайное число dx: 0.6120986135409442
Случайное число fx: 0.103119016
Случайное число bx: true
Пример 2. Случайное число x в диапазоне a ≤ x ≤ b.
Для генерации целого случайного числа x в заданном диапазоне a ≤ x ≤ b, обычно используется следующая зависимость:
тип int int x = a + rand.nextInt(b - a + 1).
тип double double y = a + rand.nextInt(b - a).
1.Random rand = new Random();
2.int a=10;
3.int b=20;
4.int x = a + rand.nextInt(b - a + 1);
5.double dx = a + rand.nextDouble()*(b - a);
6.System.out.println("Случайное число x: " + x);
7.System.out.println("Случайное число dx: " + dx);
Результат.
Случайное число x: 12 Случайное число dx: 17.505847041626733