Рубрики
Без рубрики

Java Случайный

Java Random, Случайное число Java, Генератор случайных чисел Java, Java Random int, nextInt, Случайный класс Java, Случайное семя Java, Случайное логическое значение, длинные, потоки

Автор оригинала: Pankaj Kumar.

Класс Java Random используется для генерации серии случайных чисел.

Случайный класс Java

  • Класс Random является частью пакета java.util.
  • Экземпляр класса java Random используется для генерации случайных чисел.
  • Этот класс предоставляет несколько методов для генерации случайных чисел типа integer, double, long, float и т.д.
  • Алгоритм генерации случайных чисел работает на начальном значении. Если не указано, начальное значение создается из системного нанотайма.
  • Если два случайных экземпляра имеют одинаковое начальное значение, то они будут генерировать одинаковую последовательность случайных чисел.
  • Класс Java Random потокобезопасен, однако в многопоточной среде рекомендуется использовать java.util.concurrent.ThreadLocalRandom Класс.
  • Экземпляры случайных классов не подходят для приложений, чувствительных к безопасности, лучше использовать java.security.SecureRandom в этих случаях.

Случайные конструкторы Java

Случайный класс Java имеет два конструктора, которые приведены ниже:

  1. Random() : создает новый генератор случайных чисел
  2. Случайное(длинное начальное значение) : создает новый генератор случайных чисел с использованием указанного начального значения

Методы случайного класса Java

Давайте взглянем на некоторые методы класса java Random.

  1. nextBoolean() : Этот метод возвращает следующую псевдослучайность, которая является логическим значением из последовательности генератора случайных чисел.
  2. nextDouble() : Этот метод возвращает следующую псевдослучайность, которая имеет двойное значение от 0,0 до 1,0.
  3. nextFloat() : Этот метод возвращает следующую псевдослучайность, значение которой находится в диапазоне от 0,0 до 1,0.
  4. nextInt() : Этот метод возвращает следующее значение int из последовательности генератора случайных чисел.
  5. nextInt(int n): Этот метод возвращает псевдослучайное значение, равное значению int между 0 и заданным значением из последовательности генератора случайных чисел.

Случайный пример Java

Давайте взглянем на приведенный ниже пример случайной программы java.

package com.journaldev.examples;

import java.util.Random;

/**
 * Java Random Number Example Program
 * 
 */
public class RandomNumberExample {

	public static void main(String[] args) {
		
		//initialize random number generator
		Random random = new Random();
		
		//generates boolean value
		System.out.println(random.nextBoolean());
		
		//generates double value
		System.out.println(random.nextDouble());
		
		//generates float value
		System.out.println(random.nextFloat());
		
		//generates int value
		System.out.println(random.nextInt());
		
		//generates int value within specific limit
		System.out.println(random.nextInt(20));

	}

}

Результатом работы вышеуказанной программы является:

false
0.30986869120562854
0.6210066
-1348425743
18

Проверьте этот пост, чтобы узнать больше о генерации случайных чисел Java .

Сгенерируйте случайное число, используя начальное значение

Есть два способа, которыми мы можем сгенерировать случайное число, используя начальное значение.

Random random = new Random(long seed);
                         
Random random1 = new Random();
random1.setSeed(seed);

Начальное значение-это начальное значение внутреннего состояния генератора псевдослучайных чисел, которое поддерживается методом next(int).

package com.journaldev.examples;

import java.util.Random;

/**
 * Java Random Number Using Seed Example Program
 * 
 * @author pankaj
 *
 */
public class RadomSeedExample {

	public static void main(String[] args) {
		
		//using constructor
		Random random = new Random(100);
		System.out.println("Using Constructor");
		System.out.println(random.nextInt());
		
		//using method
		Random random2 = new Random();
		random2.setSeed(200);
		System.out.println("Using Method");
		System.out.println(random2.nextInt());
	}
}

Результатом работы вышеуказанной программы является:

Using Constructor
-1193959466
Using Method
-1133938638

Что, если мы передадим одно и то же семя двум разным генераторам случайных чисел?

Давайте взглянем на приведенную ниже программу и посмотрим, что произойдет, если мы передадим одно и то же семя двум разным генераторам случайных чисел.

package com.journaldev.examples;

import java.util.Random;

/**
 * Java Random Number Using Same Seed Example Program
 * 
 */
public class RandomNumberSameSeedExample {

	public static void main(String[] args) {
		
		//initialize two random number generators using same seed
		Random random1 = new Random(100);
		Random random2 = new Random(100);
		
		System.out.println(random1.nextInt());
		System.out.println(random2.nextInt());

	}

}

Результатом работы вышеуказанной программы является:

-1193959466
-1193959466

Мы видим, что он будет генерировать одно и то же случайное число, если мы передадим одно и то же начальное значение двум разным генераторам случайных чисел.

Методы случайного класса Java 8

Как вы можете видеть на изображении выше, в Java 8 в случайный класс добавлено много новых методов. Эти методы могут генерировать поток случайных чисел. Ниже приведена простая программа для генерации потока из 5 целых чисел от 1 до 100.

package com.journaldev.random;

import java.util.Random;
import java.util.stream.IntStream;

public class JavaRandomExample {

	public static void main(String[] args) {

		Random random = new Random();

		// generate stream of 5 ints between 1 to 100
		IntStream ints = random.ints(5, 1, 100);

		ints.forEach(System.out::println);
	}

}

Это все для быстрого обзора случайного класса Java.

Ссылка: API Doc