Класс ThreadLocalRandom

Все реализуемые интерфейсы:
Serializable
public class ThreadLocalRandom
extends Random

Генератор псевдослучайных чисел, изолированный для текущей нити. Как и глобальный генератор Random, используемый классом Math, ThreadLocalRandom инициализируется с помощью генерируемого внутри семени, которое нельзя изменить. В многопоточных программах использование ThreadLocalRandom вместо общих Random объектов обычно приводит к значительно меньшему накладным расходам и конфликтам. Использование ThreadLocalRandom особенно подходит, когда несколько задач (например, каждая из ForkJoinTask) используют случайные числа параллельно в пулах потоков.

Использование этого класса обычно имеет вид: ThreadLocalRandom.current().nextX(...) (где X это Int, Long, и т.д.). При таком использовании никогда нельзя случайно получить общий ThreadLocalRandom для нескольких потоков.

Этот класс также предоставляет дополнительные методы ограниченной генерации случайных чисел.

Экземпляры ThreadLocalRandom не являются криптографически безопасными. Вместо этого используйте SecureRandom в приложениях, чувствительных к безопасности. Кроме того, экземпляры, созданные по умолчанию, не используют криптографически случайное семя, если системная переменная java.util.secureRandomSeed не установлена в значение true.

С тех пор:
1.7
См. также:
Сериализованная форма

Методы

Модификатор и тип Метод Описание
static ThreadLocalRandom current()

Возвращает ThreadLocalRandom текущей нити.

DoubleStream doubles()

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

DoubleStream doubles​(double randomNumberOrigin, double randomNumberBound)

Возвращает бесконечный поток псевдослучайных double значений, каждое из которых соответствует заданному началу (включительно) и пределу (исключительно).

DoubleStream doubles​(long streamSize)

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

DoubleStream doubles​(long streamSize, double randomNumberOrigin, double randomNumberBound)

Возвращает поток, генерирующий указанное количество streamSize псевдослучайных double значений, каждое из которых соответствует заданному началу (включительно) и пределу (исключительно).

IntStream ints()

Возвращает бесконечный поток псевдослучайных int значений.

IntStream ints​(int randomNumberOrigin, int randomNumberBound)

Возвращает бесконечный поток псевдослучайных int значений, каждое из которых соответствует заданному началу (включительно) и пределу (исключительно).

IntStream ints​(long streamSize)

Возвращает поток, генерирующий указанное количество streamSize псевдослучайных int значений.

IntStream ints​(long streamSize, int randomNumberOrigin, int randomNumberBound)

Возвращает поток, генерирующий указанное количество streamSize псевдослучайных int значений, каждое из которых соответствует заданному началу (включительно) и пределу (исключительно).

LongStream longs()

Возвращает бесконечный поток псевдослучайных long значений.

LongStream longs​(long streamSize)

Возвращает поток, генерирующий указанное количество streamSize псевдослучайных long значений.

LongStream longs​(long randomNumberOrigin, long randomNumberBound)

Возвращает бесконечный поток псевдослучайных long значений, каждое из которых соответствует заданному началу (включительно) и пределу (исключительно).

LongStream longs​(long streamSize, long randomNumberOrigin, long randomNumberBound)

Возвращает поток, генерирующий указанное количество streamSize псевдослучайных long, каждое из которых соответствует заданному началу (включительно) и пределу (исключительно).

protected int next​(int bits)

Генерирует псевдослучайное число с указанным количеством младших битов.

boolean nextBoolean()

Возвращает псевдослучайное boolean значение.

double nextDouble()

Возвращает псевдослучайное double значение между нулем (включительно) и единицей (исключительно).

double nextDouble​(double bound)

Возвращает псевдослучайное double значение между 0.0 (включительно) и заданным пределом (исключительно).

double nextDouble​(double origin, double bound)

Возвращает псевдослучайное double значение между указанным началом (включительно) и пределом (исключительно).

float nextFloat()

Возвращает псевдослучайное float значение между нулем (включительно) и единицей (исключительно).

int nextInt()

Возвращает псевдослучайное int значение.

int nextInt​(int bound)

Возвращает псевдослучайное int значение между нулем (включительно) и заданным пределом (исключительно).

int nextInt​(int origin, int bound)

Возвращает псевдослучайное int значение между указанным началом (включительно) и заданным пределом (исключительно).

long nextLong()

Возвращает псевдослучайное long значение.

long nextLong​(long bound)

Возвращает псевдослучайное long значение между нулем (включительно) и заданным пределом (исключительно).

long nextLong​(long origin, long bound)

Возвращает псевдослучайное long значение между указанным началом (включительно) и заданным пределом (исключительно).

void setSeed​(long seed)

Выбрасывает UnsupportedOperationException.

Методы, объявленные в классе java.util.Random

nextBytes, nextGaussian

Методы, объявленные в классе java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Методы

current

public static ThreadLocalRandom current()

Возвращает текущую нить ThreadLocalRandom.

Возвращает:
текущую нить ThreadLocalRandom.

setSeed

public void setSeed(long seed)

Выбрасывает UnsupportedOperationException. Установка семян в этом генераторе не поддерживается.

Переопределяет:
setSeed в классе Random
Параметры:
seed - начальное семя
Выбрасывает:
UnsupportedOperationException - всегда

next

protected int next(int bits)

Генерирует псевдослучайное число с указанным количеством младших битов. Поскольку у этого класса нет подклассов, этот метод нельзя вызвать или переопределить.

Переопределяет:
next в классе Random
Параметры:
bits - случайные биты
Возвращает:
следующее псевдослучайное значение из последовательности этого генератора псевдослучайных чисел

nextInt

public int nextInt()

Возвращает псевдослучайное int значение.

Переопределяет:
nextInt в классе Random
Возвращает:
псевдослучайное int значение

nextInt

public int nextInt(int bound)

Возвращает псевдослучайное int значение между нулём (включительно) и заданным пределом (исключительно).

Переопределяет:
nextInt в классе Random
Параметры:
bound - верхний предел (исключительно). Должен быть положительным.
Возвращает:
псевдослучайное int значение между нулём (включительно) и пределом (исключительно)
Выбрасывает:
IllegalArgumentException - если bound не является положительным

nextInt

public int nextInt(int origin,
                   int bound)

Возвращает псевдослучайное int значение между указанным начальным значением (включительно) и заданным пределом (исключительно).

Параметры:
origin - наименьшее возвращаемое значение
bound - верхний предел (исключительно)
Возвращает:
псевдослучайное int значение между начальным значением (включительно) и пределом (исключительно)
Выбрасывает:
IllegalArgumentException - если origin больше или равно bound

nextLong

public long nextLong()

Возвращает псевдослучайное long значение.

Переопределяет:
nextLong в классе Random
Возвращает:
псевдослучайное long значение

nextLong

public long nextLong(long bound)

Возвращает псевдослучайное long значение между нулём (включительно) и заданным пределом (исключительно).

Параметры:
bound - верхний предел (исключительно). Должен быть положительным.
Возвращает:
псевдослучайное long значение между нулём (включительно) и пределом (исключительно)
Выбрасывает:
IllegalArgumentException - если bound не является положительным

nextLong

public long nextLong(long origin,
                     long bound)

Возвращает псевдослучайное long значение между указанным начальным значением (включительно) и заданным пределом (исключительно).

Параметры:
origin - наименьшее возвращаемое значение
bound - верхний предел (исключительно)
Возвращает:
псевдослучайное long значение между начальным значением (включительно) и пределом (исключительно)
Выбрасывает:
IllegalArgumentException - если origin больше или равно bound

nextDouble

public double nextDouble()

Возвращает псевдослучайное double значение между нулём (включительно) и единицей (исключительно).

Переопределяет:
nextDouble в классе Random
Возвращает:
псевдослучайное double значение между нулём (включительно) и единицей (исключительно)
См. также:
Math.random()

nextDouble

public double nextDouble(double bound)

Возвращает псевдослучайное double значение между 0.0 (включительно) и заданным пределом (исключительно).

Параметры:
bound - верхний предел (исключительно). Должен быть положительным.
Возвращает:
псевдослучайное double значение между нулём (включительно) и пределом (исключительно)
Выбрасывает:
IllegalArgumentException - если bound не является положительным

nextDouble

public double nextDouble(double origin,
                         double bound)

Возвращает псевдослучайное double значение между указанным начальным значением (включительно) и пределом (исключительно).

Параметры:
origin - наименьшее возвращаемое значение
bound - верхний предел (исключительно)
Возвращает:
псевдослучайное double значение между начальным значением (включительно) и пределом (исключительно)
Выбрасывает:
IllegalArgumentException - если origin больше или равно bound

nextBoolean

public boolean nextBoolean()

Возвращает псевдослучайное boolean значение.

Переопределяет:
nextBoolean в классе Random
Возвращает:
псевдослучайное boolean значение

nextFloat

public float nextFloat()

Возвращает псевдослучайное float значение между нулём (включительно) и единицей (исключительно).

Переопределяет:
nextFloat в классе Random
Возвращает:
псевдослучайное float значение между нулём (включительно) и единицей (исключительно)

ints

public IntStream ints(long streamSize)

Возвращает поток, генерирующий указанное streamSize количество псевдослучайных int значений.

Переопределяет:
ints в классе Random
Параметры:
streamSize - количество генерируемых значений
Возвращает:
поток псевдослучайных int значений
Выбрасывает:
IllegalArgumentException - если streamSize меньше нуля
С:
1.8

ints

public IntStream ints()

Возвращает эффективно неограниченный поток псевдослучайных int значений.

Переопределяет:
ints в классе Random
Примечание к реализации:
Этот метод реализован, чтобы быть эквивалентным ints(Long.MAX_VALUE).
Возвращает:
поток псевдослучайных int значений
С:
1.8

ints

public IntStream ints(long streamSize,
                      int randomNumberOrigin,
                      int randomNumberBound)

Возвращает поток, генерирующий указанное streamSize количество псевдослучайных int значений, каждое из которых соответствует заданному начальному значению (включительно) и пределу (исключительно).

Переопределяет:
ints в классе Random
Параметры:
streamSize - количество генерируемых значений
randomNumberOrigin - начальное значение (включительно) каждого случайного значения
randomNumberBound - предел (исключительно) каждого случайного значения
Возвращает:
поток псевдослучайных int значений, каждое с заданным начальным значением (включительно) и пределом (исключительно)
Выбрасывает:
IllegalArgumentException - если streamSize меньше нуля или randomNumberOrigin больше или равно randomNumberBound
С:
1.8

ints

public IntStream ints(int randomNumberOrigin,
                      int randomNumberBound)

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

Переопределяет:
ints в классе Random
Примечание к реализации:
Этот метод реализован, чтобы быть эквивалентным ints(Long.MAX_VALUE, randomNumberOrigin, randomNumberBound).
Параметры:
randomNumberOrigin - начальное значение (включительно) каждого случайного значения
randomNumberBound - предел (исключительно) каждого случайного значения
Возвращает:
поток псевдослучайных int значений, каждое с заданным начальным значением (включительно) и пределом (исключительно)
Выбрасывает:
IllegalArgumentException - если randomNumberOrigin больше или равно randomNumberBound
С:
1.8

longs

public LongStream longs(long streamSize)

Возвращает поток, генерирующий указанное streamSize количество псевдослучайных long значений.

Переопределяет:
longs в классе Random
Параметры:
streamSize - количество генерируемых значений
Возвращает:
поток псевдослучайных long значений
Выбрасывает:
IllegalArgumentException - если streamSize меньше нуля
С:
1.8

longs

public LongStream longs()

Возвращает эффективно неограниченный поток псевдослучайных long значений.

Переопределяет:
longs в классе Random
Примечание к реализации:
Этот метод реализован, чтобы быть эквивалентным longs(Long.MAX_VALUE).
Возвращает:
поток псевдослучайных long значений
С:
1.8

longs

public LongStream longs(long streamSize,
                        long randomNumberOrigin,
                        long randomNumberBound)

Возвращает поток, генерирующий указанное streamSize количество псевдослучайных long, каждое из которых соответствует заданному начальному значению (включительно) и пределу (исключительно).

Переопределяет:
longs в классе Random
Параметры:
streamSize - количество генерируемых значений
randomNumberOrigin - начальное значение (включительно) каждого случайного значения
randomNumberBound - предел (исключительно) каждого случайного значения
Возвращает:
поток псевдослучайных long значений, каждое с заданным начальным значением (включительно) и пределом (исключительно)
Выбрасывает:
IllegalArgumentException - если streamSize меньше нуля или randomNumberOrigin больше или равно randomNumberBound
С:
1.8

longs

public LongStream longs(long randomNumberOrigin,
                        long randomNumberBound)

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

Переопределяет:
longs в классе Random
Примечание реализации:
Этот метод реализован для эквивалентности longs(Long.MAX_VALUE, randomNumberOrigin, randomNumberBound).
Параметры:
randomNumberOrigin - начальное (включительно) значение каждого случайного значения
randomNumberBound - граничное (исключительно) значение каждого случайного значения
Возвращает:
поток псевдослучайных long значений, каждое с заданным начальным (включительно) и граничным (исключительно) значениями
Исключение:
IllegalArgumentException - если randomNumberOrigin больше или равно randomNumberBound
С:
1.8

doubles

public DoubleStream doubles(long streamSize)

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

Переопределяет:
doubles в классе Random
Параметры:
streamSize - количество значений для генерации
Возвращает:
поток double значений
Исключение:
IllegalArgumentException - если streamSize меньше нуля
С:
1.8

doubles

public DoubleStream doubles()

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

Переопределяет:
doubles в классе Random
Примечание реализации:
Этот метод реализован для эквивалентности doubles(Long.MAX_VALUE).
Возвращает:
поток псевдослучайных double значений
С:
1.8

doubles

public DoubleStream doubles(long streamSize,
                            double randomNumberOrigin,
                            double randomNumberBound)

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

Переопределяет:
doubles в классе Random
Параметры:
streamSize - количество значений для генерации
randomNumberOrigin - начальное (включительно) значение каждого случайного значения
randomNumberBound - граничное (исключительно) значение каждого случайного значения
Возвращает:
поток псевдослучайных double значений, каждое с заданным начальным (включительно) и граничным (исключительно) значениями
Исключение:
IllegalArgumentException - если streamSize меньше нуля, или randomNumberOrigin больше или равно randomNumberBound
С:
1.8

doubles

public DoubleStream doubles(double randomNumberOrigin,
                            double randomNumberBound)

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

Переопределяет:
doubles в классе Random
Примечание реализации:
Этот метод реализован для эквивалентности doubles(Long.MAX_VALUE, randomNumberOrigin, randomNumberBound).
Параметры:
randomNumberOrigin - начальное (включительно) значение каждого случайного значения
randomNumberBound - граничное (исключительно) значение каждого случайного значения
Возвращает:
поток псевдослучайных double значений, каждое с заданным начальным (включительно) и граничным (исключительно) значениями
Исключение:
IllegalArgumentException - если randomNumberOrigin больше или равно randomNumberBound
С:
1.8

© 1993, 2020, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/concurrent/ThreadLocalRandom.html

Spec-Zone .ru
спецификации, руководства, описания, API