РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
623 of 1163 menu

Класс SplittableRandom

Класс SplittableRandom из пакета java.util представляет собой генератор псевдослучайных чисел, который поддерживает операцию разветвления. В отличие от обычного класса Random, он не использует атомарные операции и поэтому работает быстрее в однопоточных сценариях, а также позволяет создавать независимые дочерние генераторы с помощью метода split. Это особенно удобно при параллельных вычислениях, когда каждому потоку нужен собственный источник случайных чисел.

Конструктор класса SplittableRandom может принимать начальное зерно (seed) в первом параметре. Если зерно не указано, генерируется случайное начальное значение. Класс предоставляет методы nextInt, nextLong, nextDouble, nextBoolean и другие для получения случайных значений различных типов.

Синтаксис

SplittableRandom random = new SplittableRandom(); SplittableRandom random = new SplittableRandom(seed);

Пример

Давайте создадим генератор и получим несколько случайных чисел:

import java.util.SplittableRandom; public class Main { public static void main(String[] args) { SplittableRandom random = new SplittableRandom(123); System.out.println(random.nextInt()); System.out.println(random.nextLong()); System.out.println(random.nextDouble()); System.out.println(random.nextBoolean()); } }

Результат выполнения кода:

-1188957731 -7232484386247168155 0.7231742029971469 true

Пример

Давайте получим случайное число в заданном диапазоне с помощью метода nextInt с двумя параметрами:

import java.util.SplittableRandom; public class Main { public static void main(String[] args) { SplittableRandom random = new SplittableRandom(42); int res = random.nextInt(1, 100); System.out.println(res); } }

Результат выполнения кода:

70

Пример

Давайте разветвим генератор на два независимых потока с помощью метода split:

import java.util.SplittableRandom; public class Main { public static void main(String[] args) { SplittableRandom random = new SplittableRandom(123); SplittableRandom split1 = random.split(); SplittableRandom split2 = random.split(); System.out.println(split1.nextInt()); System.out.println(split2.nextInt()); } }

Результат выполнения кода:

-1188957731 1051112573

Смотрите также

  • класс Random,
    который является классическим генератором случайных чисел
  • класс ThreadLocalRandom,
    который оптимизирован для многопоточного использования
  • метод nextInt,
    который возвращает случайное целое число
  • метод nextDouble,
    который возвращает случайное число с плавающей точкой
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить