MyTetra Share
Делитесь знаниями!
Время создания: 10.04.2021 08:44
Текстовые метки: random, java
Раздел: Компьютер - Java
Запись: Kozlov-AE/Tetra/master/base/1618033444rph5sdvtis/text.html на raw.githubusercontent.com

Существует несколько способов генерации случайного (псевдослучайного) числа:

  • Использование метода 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

 Для получения случайных чисел необходимо:

  1.  Подключить библиотеку случайных чисел. Пишем до определения класса. 
    import java.util.Random;
  2.  В классе создать объект rand случайных чисел
     Random rand = new Random();
  3.  Далее использовать необходимые методы объекта 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

 
MyTetra Share v.0.59
Яндекс индекс цитирования