Spec-Zone.ru › OpenJDK 17

Класс ThreadLocalRandom

java.lang.Object
java.util.Random
java.util.concurrent.ThreadLocalRandom
Все реализованные интерфейсы:
Serializable, RandomGenerator
public 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.

С тех пор:
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 псевдослучайных 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)
Генерирует псевдослучайное число с указанным числом младших разрядов.
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

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

nextInt

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

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

nextFloat

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

nextFloat

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

nextDouble

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

nextDouble

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

ints

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

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

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

ints

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

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

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

ints

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

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

 
 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 - граница (исключительно) каждого случайного значения
Возвращает:
поток псевдослучайных int значений, каждое с заданным началом (включительно) и границей (исключительно)
Бросает:
IllegalArgumentException - если streamSize меньше нуля, или randomNumberOrigin больше или равно randomNumberBound
С:
1.8

ints

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

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

 
 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 - граница (исключительно) каждого случайного значения
Возвращает:
поток псевдослучайных int значений, каждое из которых имеет заданное начало (включительно) и границу (исключительно)
Выбрасывает:
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 значений, каждое из которых соответствует заданному началу (включительно) и границе (исключительно).

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

 
 double nextDouble(double origin, double bound) {
   double r = nextDouble();
   r = r * (bound - origin) + origin;
   if (r >= bound) // correct for rounding
     r = Math.nextDown(bound);
   return r;
 }
Указано в:
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 значений, каждое из которых соответствует заданному началу (включительно) и границе (исключительно).

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

 
 double nextDouble(double origin, double bound) {
   double r = nextDouble();
   r = r * (bound - origin) + origin;
   if (r >= bound) // correct for rounding
     r = Math.nextDown(bound);
   return r;
 }
Указано в:
doubles в интерфейсе RandomGenerator
Переопределяет:
doubles в классе Random
Примечание об реализации:
Этот метод реализован так, чтобы быть эквивалентным doubles(Long.MAX_VALUE, randomNumberOrigin, randomNumberBound).
Параметры:
randomNumberOrigin - начало (включительно) каждого случайного значения
randomNumberBound - граница (исключительно) каждого случайного значения
Возвращает:
поток псевдослучайных double значений, каждое из которых имеет заданное начало (включительно) и границу (исключительно)
Выбрасывает:
IllegalArgumentException - если randomNumberOrigin больше или равно randomNumberBound
С:
1.8

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

Spec-Zone.ru

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