Spec-Zone.ru › OpenJDK 21

Класс ThreadLocalRandom

java.lang.Object
java.util.Random
java.util.concurrent.ThreadLocalRandom
Все реализуемые интерфейсы:
Serializable, RandomGenerator
public final class ThreadLocalRandom extends Random
Генератор случайных чисел (с периодом 264), изолированный для текущей нити. Как и глобальный Random генератор, используемый классом Math, объект ThreadLocalRandom инициализируется внутренне сгенерированным значением, которое нельзя изменить. В многопоточных программах, по возможности, использование ThreadLocalRandom вместо общих Random объектов, как правило, снижает накладные расходы и конкуренцию. Использование ThreadLocalRandom особенно актуально, когда несколько задач (например, каждая из класса ForkJoinTask) используют случайные числа параллельно в пулах потоков.

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

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

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

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

Краткое описание вложенных классов

Вложенные классы/интерфейсы, объявленные в интерфейсе java.util.random.RandomGenerator

RandomGenerator.ArbitrarilyJumpableGenerator, RandomGenerator.JumpableGenerator, RandomGenerator.LeapableGenerator, RandomGenerator.SplittableGenerator, RandomGenerator.StreamableGenerator

Краткое описание методов

Модификатор и тип Метод Описание
static ThreadLocalRandom current()
Возвращает текущий объект ThreadLocalRandom потока.
DoubleStream doubles()
Возвращает бесконечный поток псевдослучайных значений double, каждое из которых находится в диапазоне от нуля (включительно) до единицы (исключительно).
DoubleStream doubles(double randomNumberOrigin, double randomNumberBound)
Возвращает бесконечный поток псевдослучайных значений double, каждое из которых находится в диапазоне от заданного начала (включительно) до заданного конца (исключительно).
DoubleStream doubles(long streamSize)
Возвращает поток, генерирующий заданное количество псевдослучайных значений streamSize, каждое из которых находится в диапазоне от нуля (включительно) до единицы (исключительно).
DoubleStream doubles(long streamSize, double randomNumberOrigin, double randomNumberBound)
Возвращает поток, генерирующий заданное количество псевдослучайных значений double в диапазоне от заданного начала (включительно) до заданного конца (исключительно).
IntStream ints()
Возвращает бесконечный поток псевдослучайных значений int.
IntStream ints(int randomNumberOrigin, int randomNumberBound)
Возвращает бесконечный поток псевдослучайных значений int в диапазоне от заданного начала (включительно) до заданного конца (исключительно).
IntStream ints(long streamSize)
Возвращает поток, генерирующий заданное количество псевдослучайных значений int.
IntStream ints(long streamSize, int randomNumberOrigin, int randomNumberBound)
Возвращает поток, генерирующий заданное количество псевдослучайных значений int в диапазоне от заданного начала (включительно) до заданного конца (исключительно).
LongStream longs()
Возвращает бесконечный поток псевдослучайных значений long.
LongStream longs(long streamSize)
Возвращает поток, генерирующий заданное количество псевдослучайных значений long.
LongStream longs(long randomNumberOrigin, long randomNumberBound)
Возвращает бесконечный поток псевдослучайных значений long в диапазоне от заданного начала (включительно) до заданного конца (исключительно).
LongStream longs(long streamSize, long randomNumberOrigin, long randomNumberBound)
Возвращает поток, генерирующий заданное количество псевдослучайных значений long, каждое из которых находится в диапазоне от заданного начала (включительно) до заданного конца (исключительно).
protected int next(int bits)
Генерирует псевдослучайное число с указанным количеством младших битов.
double nextDouble(double bound)
Возвращает псевдослучайно выбранное значение double в диапазоне от нуля (включительно) до заданного предела (исключительно).
double nextDouble(double origin, double bound)
Возвращает псевдослучайно выбранное значение double в диапазоне от заданного начала (включительно) до заданного предела (исключительно).
float nextFloat(float bound)
Возвращает псевдослучайно выбранное значение float в диапазоне от нуля (включительно) до заданного предела (исключительно).
float nextFloat(float origin, float bound)
Возвращает псевдослучайно выбранное значение float в диапазоне от заданного начала (включительно) до заданного предела (исключительно).
int nextInt(int bound)
Возвращает псевдослучайное, равномерно распределённое значение int в диапазоне от 0 (включительно) до заданного значения (исключительно), взятое из последовательности этого генератора случайных чисел.
int nextInt(int origin, int bound)
Возвращает псевдослучайно выбранное значение int в диапазоне от заданного начала (включительно) до заданного предела (исключительно).
long nextLong(long bound)
Возвращает псевдослучайно выбранное значение long в диапазоне от нуля (включительно) до заданного предела (исключительно).
long nextLong(long origin, long bound)
Возвращает псевдослучайно выбранное значение long в диапазоне от заданного начала (включительно) до заданного предела (исключительно).
void setSeed(long seed)
Выбрасывает UnsupportedOperationException.

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

from, nextBoolean, nextBytes, nextDouble, nextFloat, nextGaussian, nextInt, nextLong

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

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

Методы, унаследованные от интерфейса java.util.random.RandomGenerator

isDeprecated, nextExponential, nextGaussian

Подробное описание методов

current

public static ThreadLocalRandom current()
Возвращает текущий объект потока. Методы этого объекта должны вызываться только текущим потоком, а не другими потоками.
Возвращает:
текущий объект потока

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 bound)
Возвращает псевдослучайное, равномерно распределённое целое значение от 0 (включительно) до указанного значения (исключительно), взятое из последовательности этого генератора случайных чисел. Общий договор nextInt заключается в том, что одно целое значение в заданном диапазоне генерируется псевдослучайно и возвращается. Все возможные целые значения генерируются с (приблизительно) равной вероятностью.
Определено в:
nextInt в интерфейсе RandomGenerator
Переопределяет:
nextInt в классе Random
Параметры:
bound - верхняя граница (исключительно). Должно быть положительным.
Возвращает:
следующее псевдослучайное, равномерно распределённое целое значение от нуля (включительно) до bound (исключительно) из последовательности этого генератора случайных чисел
Бросает:
IllegalArgumentException - если граница не положительна

nextInt

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

nextLong

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

nextLong

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

nextFloat

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

nextFloat

public float nextFloat(float origin, float bound)
Возвращает псевдослучайное число с плавающей точкой между заданным началом (включительно) и заданной границей (исключительно).
Примечание реализации:
Параметры:
origin - наименьшее возвращаемое значение
bound - верхняя граница (исключительно)
Возвращает:
псевдослучайное число с плавающей точкой между началом (включительно) и границей (исключительно)
Бросает:
IllegalArgumentException - если origin не конечно, или bound не конечно, или origin больше или равно bound

nextDouble

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

nextDouble

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

ints

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

Значение псевдослучайного целого числа генерируется так, как будто оно является результатом вызова метода Random.nextInt().

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

ints

public IntStream ints()
Возвращает эффективно неограниченный поток псевдослучайных целых значений.

Значение псевдослучайного целого числа генерируется так, как будто оно является результатом вызова метода Random.nextInt().

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

ints

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

Значение псевдослучайного целого числа генерируется так, как будто оно является результатом вызова следующего метода с началом и границей:

 
 int nextInt(int origin, int bound) {
   int n = bound - origin;
   if (n > 0) {
     return nextInt(n) + origin;
   }
   else {  // range not representable as int
     int r;
     do {
       r = nextInt();
     } while (r < origin || r >= bound);
     return r;
   }
 }
Определено в:
ints в интерфейсе RandomGenerator
Переопределяет:
ints в классе Random
Параметры:
streamSize - количество генерируемых значений
randomNumberOrigin - начало (включительно) каждого случайного значения
randomNumberBound - граница (исключительно) каждого случайного значения
Возвращает:
поток псевдослучайных целых значений, каждое с заданным началом (включительно) и границей (исключительно)
Бросает:
IllegalArgumentException - если streamSize меньше нуля, или randomNumberOrigin больше или равно randomNumberBound
С тех пор:
1.8

ints

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

Значение псевдослучайного целого числа генерируется так, как будто оно является результатом вызова следующего метода с началом и границей:

 
 int nextInt(int origin, int bound) {
   int n = bound - origin;
   if (n > 0) {
     return nextInt(n) + origin;
   }
   else {  // range not representable as int
     int r;
     do {
       r = nextInt();
     } while (r < origin || r >= bound);
     return r;
   }
 }
Определено в:
ints в интерфейсе RandomGenerator
Переопределяет:
ints в классе Random
Примечание реализации:
Этот метод реализован так, чтобы быть эквивалентным ints(Long.MAX_VALUE, randomNumberOrigin, randomNumberBound).
Параметры:
randomNumberOrigin - начало (включительно) каждого случайного значения
randomNumberBound - граница (исключительно) каждого случайного значения
Возвращает:
поток псевдослучайных целых значений, каждое с заданным началом (включительно) и границей (исключительно)
Бросает:
IllegalArgumentException - если randomNumberOrigin больше или равно randomNumberBound
С тех пор:
1.8

longs

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

Псевдослучайное long значение генерируется так, как если бы оно было результатом вызова метода Random.nextLong().

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

longs

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

Псевдослучайное long значение генерируется так, как если бы оно было результатом вызова метода Random.nextLong().

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

longs

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

Псевдослучайное long значение генерируется так, как если бы оно было результатом вызова следующего метода с началом и границей:

 
 long nextLong(long origin, long bound) {
   long r = nextLong();
   long n = bound - origin, m = n - 1;
   if ((n & m) == 0L)  // power of two
     r = (r & m) + origin;
   else if (n > 0L) {  // reject over-represented candidates
     for (long u = r >>> 1;            // ensure nonnegative
          u + m - (r = u % n) < 0L;    // rejection check
          u = nextLong() >>> 1) // retry
         ;
     r += origin;
   }
   else {              // range not representable as long
     while (r < origin || r >= bound)
       r = nextLong();
   }
   return r;
 }
Определено в:
longs в интерфейсе RandomGenerator
Переопределяет:
longs в классе Random
Параметры:
streamSize - количество генерируемых значений
randomNumberOrigin - начало (включительно) каждого случайного значения
randomNumberBound - граница (исключительно) каждого случайного значения
Возвращает:
поток псевдослучайных long значений, каждое с заданным началом (включительно) и границей (исключительно)
Выбрасывает:
IllegalArgumentException - если streamSize меньше нуля или randomNumberOrigin больше или равно randomNumberBound
С тех пор:
1.8

longs

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

Псевдослучайное long значение генерируется так, как если бы оно было результатом вызова следующего метода с началом и границей:

 
 long nextLong(long origin, long bound) {
   long r = nextLong();
   long n = bound - origin, m = n - 1;
   if ((n & m) == 0L)  // power of two
     r = (r & m) + origin;
   else if (n > 0L) {  // reject over-represented candidates
     for (long u = r >>> 1;            // ensure nonnegative
          u + m - (r = u % n) < 0L;    // rejection check
          u = nextLong() >>> 1) // retry
         ;
     r += origin;
   }
   else {              // range not representable as long
     while (r < origin || r >= bound)
       r = nextLong();
   }
   return r;
 }
Определено в:
longs в интерфейсе RandomGenerator
Переопределяет:
longs в классе Random
Замечание по реализации:
Этот метод реализован так, чтобы быть эквивалентным longs(Long.MAX_VALUE, randomNumberOrigin, randomNumberBound).
Параметры:
randomNumberOrigin - начало (включительно) каждого случайного значения
randomNumberBound - граница (исключительно) каждого случайного значения
Возвращает:
поток псевдослучайных long значений, каждое с заданным началом (включительно) и границей (исключительно)
Выбрасывает:
IllegalArgumentException - если randomNumberOrigin больше или равно randomNumberBound
С тех пор:
1.8

doubles

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

Псевдослучайное double значение генерируется так, как если бы оно было результатом вызова метода Random.nextDouble().

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

doubles

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

Псевдослучайное double значение генерируется так, как если бы оно было результатом вызова метода Random.nextDouble().

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

doubles

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

doubles

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

© 1993, 2023, 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/21/docs/api/java.base/java/util/concurrent/ThreadLocalRandom.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API