Интерфейс RandomGenerator
- Все известные подинтерфейсы:
RandomGenerator.ArbitrarilyJumpableGenerator, RandomGenerator.JumpableGenerator, RandomGenerator.LeapableGenerator, RandomGenerator.SplittableGenerator, RandomGenerator.StreamableGenerator
- Все известные реализующие классы:
Random, SecureRandom, SplittableRandom, ThreadLocalRandom
public interface RandomGenerator
RandomGenerator предназначен для предоставления общего протокола объектам, генерирующим случайные или (чаще) псевдослучайные последовательности чисел (или логических значений). Такую последовательность можно получить, многократно вызывая метод, который возвращает одно псевдослучайно выбранное значение, либо вызывая метод, который возвращает поток псевдослучайно выбранных значений. В идеале, если диапазон значений задан неявно или явно, каждое значение выбиралось бы независимо и равномерно из этого диапазона. На практике, возможно, придется довольствоваться некоторым приближением к независимости и равномерности.
Для значений int, long и boolean, если диапазон не задан явно, он включает все возможные значения данного типа. Для значений float и double сначала всегда равномерно выбирается значение из множества 2w значений от 0.0 (включительно) до 1.0 (не включая), где w — это Float.PRECISION для значений float и Double.PRECISION для значений double, так что соседние значения отличаются на 2−w (обратите внимание, что это множество является подмножеством множества всех представимых значений с плавающей точкой от 0.0 (включительно) до 1.0 (не включая)); затем, если диапазон задан явно, выбранное число программно масштабируется и смещается так, чтобы казалось, что оно было выбрано приблизительно равномерно из этого явно заданного диапазона.
Каждый метод, возвращающий поток, создает поток значений, каждое из которых выбирается тем же способом, что и для метода, возвращающего одно псевдослучайно выбранное значение. Например, если r реализует RandomGenerator, то вызов метода r.ints(100) возвращает поток из 100 значений int. Это не обязательно те же самые значения, которые были бы возвращены, если бы вместо этого r.nextInt() был вызван 100 раз; гарантируется лишь то, что каждое значение в потоке выбирается аналогичным псевдослучайным образом из того же диапазона.
Предполагается, что каждый объект, реализующий интерфейс RandomGenerator с использованием псевдослучайного алгоритма, содержит конечное количество состояния. Использование такого объекта для генерации псевдослучайно выбранного значения изменяет его состояние: вычисляется новое состояние как функция текущего состояния без обращения к какой-либо информации, кроме текущего состояния. Количество различных возможных состояний такого объекта называется его периодом. (Некоторые реализации интерфейса RandomGenerator могут быть действительно случайными, а не псевдослучайными, например, если выбранные значения определяются на основе статистического поведения физического объекта. У таких реализаций нет фиксированного периода.)
Как правило, объекты, реализующие интерфейс RandomGenerator, не обязаны быть потокобезопасными. Для многопоточных приложений рекомендуется использовать либо ThreadLocalRandom, либо (предпочтительно) генераторы псевдослучайных чисел, реализующие интерфейс RandomGenerator.SplittableGenerator или RandomGenerator.JumpableGenerator.
Объекты, реализующие RandomGenerator, как правило, не являются криптографически стойкими. Для приложений, в которых важна безопасность, рассмотрите возможность использования SecureRandom для получения криптографически стойкого генератора псевдослучайных чисел. Однако обратите внимание, что SecureRandom реализует интерфейс RandomGenerator, поэтому экземпляры SecureRandom можно взаимозаменяемо использовать с другими типами генераторов псевдослучайных чисел в приложениях, которым не требуется безопасный генератор.
Если явно не указано иное, использование null в качестве аргумента любого метода вызовет NullPointerException.
- Начиная с версии:
- 17
Краткое описание вложенных классов
| Модификатор и тип | Интерфейс | Описание |
|---|---|---|
static interface |
RandomGenerator.ArbitrarilyJumpableGenerator |
Этот интерфейс предназначен для предоставления общего протокола объектам, генерирующим последовательности псевдослучайных значений и способным легко выполнять прыжок вперед на произвольное расстояние к удаленной точке цикла состояний. |
static interface |
RandomGenerator.JumpableGenerator |
Этот интерфейс предназначен для предоставления общего протокола объектам, генерирующим псевдослучайные значения и способным легко выполнять прыжок вперед на умеренное расстояние (например, 264) к удаленной точке цикла состояний. |
static interface |
RandomGenerator.LeapableGenerator |
Этот интерфейс предназначен для предоставления общего протокола объектам, генерирующим последовательности псевдослучайных значений и способным не только выполнять прыжок, но и делать скачок вперед на большое расстояние (например, 2128) к очень удаленной точке цикла состояний. |
static interface |
RandomGenerator.SplittableGenerator |
Этот интерфейс предназначен для предоставления общего протокола объектам, генерирующим последовательности псевдослучайных значений и способным разделяться на два объекта (исходный и новый), каждый из которых следует тому же протоколу (и поэтому может рекурсивно разделяться неограниченное количество раз). |
static interface |
RandomGenerator.StreamableGenerator |
Интерфейс RandomGenerator.StreamableGenerator дополняет интерфейс RandomGenerator, предоставляя методы, возвращающие потоки объектов RandomGenerator. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
default DoubleStream |
doubles() |
Возвращает практически неограниченный поток псевдослучайно выбранных значений double. |
default DoubleStream |
doubles |
Возвращает практически неограниченный поток псевдослучайно выбранных значений double, каждое из которых находится между указанным началом (включительно) и указанной верхней границей (не включая). |
default DoubleStream |
doubles |
Возвращает поток, содержащий указанное количество streamSize псевдослучайно выбранных значений double. |
default DoubleStream |
doubles |
Возвращает поток, содержащий указанное количество streamSize псевдослучайно выбранных значений double, каждое из которых находится между указанным началом (включительно) и указанной верхней границей (не включая). |
default DoubleStream |
equiDoubles |
Возвращает практически неограниченный поток псевдослучайно выбранных значений double, каждое из которых находится между указанной границей left и указанной границей right. |
static RandomGenerator |
getDefault() |
Возвращает RandomGenerator, удовлетворяющий минимальному требованию: используемый им алгоритм имеет не менее 64 бит состояния. |
default IntStream |
ints() |
Возвращает практически неограниченный поток псевдослучайно выбранных значений int. |
default IntStream |
ints |
Возвращает практически неограниченный поток псевдослучайно выбранных значений int, каждое из которых находится между указанным началом (включительно) и указанной верхней границей (не включая). |
default IntStream |
ints |
Возвращает поток, содержащий указанное количество streamSize псевдослучайно выбранных значений int. |
default IntStream |
ints |
Возвращает поток, содержащий указанное количество streamSize псевдослучайно выбранных значений int, каждое из которых находится между указанным началом (включительно) и указанной верхней границей (не включая). |
default boolean |
isDeprecated() |
Возвращает true, если реализация RandomGenerator (алгоритм) помечена как устаревшая. |
default LongStream |
longs() |
Возвращает практически неограниченный поток псевдослучайно выбранных значений long. |
default LongStream |
longs |
Возвращает поток, содержащий указанное количество streamSize псевдослучайно выбранных значений long. |
default LongStream |
longs |
Возвращает практически неограниченный поток псевдослучайно выбранных значений long, каждое из которых находится между указанным началом (включительно) и указанной верхней границей (не включая). |
default LongStream |
longs |
Возвращает поток, содержащий указанное количество streamSize псевдослучайно выбранных значений long, каждое из которых находится между указанным началом (включительно) и указанной верхней границей (не включая). |
default boolean |
nextBoolean() |
Возвращает псевдослучайно выбранное значение boolean. |
default void |
nextBytes |
Заполняет предоставленный пользователем массив байтов сгенерированными байтовыми значениями, равномерно псевдослучайно выбранными из диапазона от -128 (включительно) до 127 (включительно). |
default double |
nextDouble() |
Возвращает псевдослучайное значение double от нуля (включительно) до единицы (не включая). |
default double |
nextDouble |
Возвращает псевдослучайно выбранное значение double от нуля (включительно) до указанной верхней границы (не включая). |
default double |
nextDouble |
Возвращает псевдослучайно выбранное значение double между указанным началом (включительно) и указанной верхней границей (не включая). |
default double |
nextExponential() |
Возвращает неотрицательное значение double, псевдослучайно выбранное из экспоненциального распределения со средним значением 1. |
default float |
nextFloat() |
Возвращает псевдослучайное значение float от нуля (включительно) до единицы (не включая). |
default float |
nextFloat |
Возвращает псевдослучайно выбранное значение float от нуля (включительно) до указанной верхней границы (не включая). |
default float |
nextFloat |
Возвращает псевдослучайно выбранное значение float между указанным началом (включительно) и указанной верхней границей (не включая). |
default double |
nextGaussian() |
Возвращает значение double, псевдослучайно выбранное из гауссовского (нормального) распределения со средним значением 0 и стандартным отклонением 1. |
default double |
nextGaussian |
Возвращает значение double, псевдослучайно выбранное из гауссовского (нормального) распределения со средним значением и стандартным отклонением, заданными аргументами. |
default int |
nextInt() |
Возвращает псевдослучайно выбранное значение int. |
default int |
nextInt |
Возвращает псевдослучайно выбранное значение int от нуля (включительно) до указанной верхней границы (не включая). |
default int |
nextInt |
Возвращает псевдослучайно выбранное значение int между указанным началом (включительно) и указанной верхней границей (не включая). |
long |
nextLong() |
Возвращает псевдослучайно выбранное значение long. |
default long |
nextLong |
Возвращает псевдослучайно выбранное значение long от нуля (включительно) до указанной верхней границы (не включая). |
default long |
nextLong |
Возвращает псевдослучайно выбранное значение long между указанным началом (включительно) и указанной верхней границей (не включая). |
static RandomGenerator |
of |
Подробное описание методов
of
static RandomGenerator of(String name)
- Параметры:
-
name— название алгоритма генератора случайных чисел - Возвращает:
- экземпляр
RandomGenerator - Выбрасывает:
-
NullPointerException— если имя равно null -
IllegalArgumentException— если алгоритм с указанным именем не найден
getDefault
static RandomGenerator getDefault()
RandomGenerator, удовлетворяющий минимальному требованию: его алгоритм должен иметь не менее 64 бит состояния.- Требования к реализации:
- Поскольку алгоритмы со временем совершенствуются, нет гарантии, что этот метод будет возвращать один и тот же алгоритм.
Реализация по умолчанию выбирает L32X64MixRandom.
- Возвращает:
RandomGenerator
isDeprecated
default boolean isDeprecated()
- Требования к реализации:
- Реализация по умолчанию проверяет наличие аннотации @Deprecated.
- Примечание по реализации:
- Алгоритмы генерации случайных чисел со временем развиваются: появляются новые алгоритмы, а старые теряют актуальность. Если более старый алгоритм признаётся непригодным для дальнейшего использования, он помечается как устаревший, что указывает на возможность его удаления в будущем.
- Возвращает:
- true, если реализация RandomGenerator (алгоритм) помечена как устаревшая
doubles
default DoubleStream doubles()
double.- Требования к реализации:
- Реализация по умолчанию создаёт последовательный поток, многократно вызывающий
nextDouble(). - Примечание по реализации:
- Допускается реализовать этот метод способом, эквивалентным вызову
doubles(Long.MAX_VALUE). - Возвращает:
- поток псевдослучайно выбранных значений
double
doubles
default DoubleStream doubles(double randomNumberOrigin, double randomNumberBound)
double, каждое из которых находится между указанным начальным значением (включительно) и указанной верхней границей (не включительно).- Требования к реализации:
- Реализация по умолчанию создаёт последовательный поток, многократно вызывающий
nextDouble(randomNumberOrigin, randomNumberBound). - Примечание по реализации:
- Допускается реализовать этот метод способом, эквивалентным вызову
doubles(Long.MAX_VALUE, randomNumberOrigin, randomNumberBound). - Параметры:
-
randomNumberOrigin— наименьшее возможное значение -
randomNumberBound— верхняя граница (не включительно) для каждого генерируемого значения - Возвращает:
- поток псевдослучайно выбранных значений
double, каждое из которых находится между указанным начальным значением (включительно) и указанной верхней границей (не включительно) - Выбрасывает:
-
IllegalArgumentException— еслиrandomNumberOriginне является конечным, илиrandomNumberBoundне является конечным, илиrandomNumberOriginбольше или равноrandomNumberBound
doubles
default DoubleStream doubles(long streamSize)
streamSize количество псевдослучайно выбранных значений double.- Требования к реализации:
- Реализация по умолчанию создаёт последовательный поток, многократно вызывающий
nextDouble(). - Параметры:
-
streamSize— количество генерируемых значений - Возвращает:
- поток псевдослучайно выбранных значений
double - Выбрасывает:
-
IllegalArgumentException— еслиstreamSizeменьше нуля
doubles
default DoubleStream doubles(long streamSize, double randomNumberOrigin, double randomNumberBound)
streamSize количество псевдослучайно выбранных значений double, каждое из которых находится между указанным начальным значением (включительно) и указанной верхней границей (не включительно).- Требования к реализации:
- Реализация по умолчанию создаёт последовательный поток, многократно вызывающий
nextDouble(randomNumberOrigin, randomNumberBound). - Параметры:
-
streamSize— количество генерируемых значений -
randomNumberOrigin— наименьшее возможное значение -
randomNumberBound— верхняя граница (не включительно) для каждого генерируемого значения - Возвращает:
- поток псевдослучайно выбранных значений
double, каждое из которых находится между указанным начальным значением (включительно) и указанной верхней границей (не включительно) - Выбрасывает:
-
IllegalArgumentException— еслиstreamSizeменьше нуля, илиrandomNumberOriginне является конечным, илиrandomNumberBoundне является конечным, илиrandomNumberOriginбольше или равноrandomNumberBound
equiDoubles
default DoubleStream equiDoubles(double left, double right, boolean isLeftIncluded, boolean isRightIncluded)
double, каждое из которых находится между указанной left границей и указанной right границей. Включение left границы определяется значением isLeftIncluded; аналогично, включение right границы определяется значением isRightIncluded. Поток потенциально генерирует все кратные k δ (k — целое число), лежащие в интервале, заданном параметрами, где δ > 0 — наименьшее число, для которого все эти кратные являются точными значениями double. Поэтому все они равноотстоят друг от друга. Равномерность распределения значений double, генерируемых потоком, зависит от качества используемого nextLong(long).
- Требования к реализации:
- Реализация по умолчанию сначала определяет указанное выше значение δ. Затем она вычисляет наименьшее целое число kl, для которого kl δ находится внутри заданного интервала, и наименьшее целое число n > 0, для которого (kl + n) δ находится вне интервала. Наконец, метод возвращает поток, генерирующий значения
doubleпо формуле (kl +nextLong(n)) δ. Поток никогда не генерирует-0.0, однако может генерировать0.0, если указанный интервал содержит 0. - Параметры:
-
left— левая граница -
right— правая граница -
isLeftIncluded— указывает, включена лиleftграница -
isRightIncluded— указывает, включена лиrightграница - Возвращает:
- поток псевдослучайно выбранных значений
double, каждое из которых находится междуleftиright, как описано выше. - Выбрасывает:
-
IllegalArgumentException— еслиleftне является конечным, илиrightне является конечным, или указанный интервал пуст. - С версии:
- 22
ints
default IntStream ints()
int.- Требования к реализации:
- Реализация по умолчанию создаёт последовательный поток, многократно вызывающий
nextInt(). - Примечание по реализации:
- Допускается реализовать этот метод способом, эквивалентным вызову
ints(Long.MAX_VALUE). - Возвращает:
- поток псевдослучайно выбранных значений
int
ints
default IntStream ints(int randomNumberOrigin, int randomNumberBound)
int, каждое из которых находится между указанным начальным значением (включительно) и указанной верхней границей (не включительно).- Требования к реализации:
- Реализация по умолчанию создаёт последовательный поток, многократно вызывающий
nextInt(randomNumberOrigin, randomNumberBound). - Примечание по реализации:
- Допускается реализовать этот метод способом, эквивалентным вызову
ints(Long.MAX_VALUE, randomNumberOrigin, randomNumberBound). - Параметры:
-
randomNumberOrigin— наименьшее возможное значение -
randomNumberBound— верхняя граница (не включительно) для каждого генерируемого значения - Возвращает:
- поток псевдослучайно выбранных значений
int, каждое из которых находится между указанным начальным значением (включительно) и указанной верхней границей (не включительно) - Выбрасывает:
-
IllegalArgumentException— еслиrandomNumberOriginбольше или равноrandomNumberBound
ints
default IntStream ints(long streamSize)
streamSize количество псевдослучайно выбранных значений int.- Требования к реализации:
- Реализация по умолчанию создаёт последовательный поток, многократно вызывающий
nextInt(). - Параметры:
-
streamSize— количество генерируемых значений - Возвращает:
- поток псевдослучайно выбранных значений
int - Выбрасывает:
-
IllegalArgumentException— еслиstreamSizeменьше нуля
ints
default IntStream ints(long streamSize, int randomNumberOrigin, int randomNumberBound)
streamSize количество псевдослучайно выбранных значений int, каждое из которых находится между указанным начальным значением (включительно) и указанной верхней границей (не включительно).- Требования к реализации:
- Реализация по умолчанию создаёт последовательный поток, многократно вызывающий
nextInt(randomNumberOrigin, randomNumberBound). - Параметры:
-
streamSize— количество генерируемых значений -
randomNumberOrigin— наименьшее возможное значение -
randomNumberBound— верхняя граница (не включительно) для каждого генерируемого значения - Возвращает:
- поток псевдослучайно выбранных значений
int, каждое из которых находится между указанным начальным значением (включительно) и указанной верхней границей (не включительно) - Выбрасывает:
-
IllegalArgumentException— еслиstreamSizeменьше нуля илиrandomNumberOriginбольше или равноrandomNumberBound
longs
default LongStream longs()
long.- Требования к реализации:
- Реализация по умолчанию создаёт последовательный поток, многократно вызывающий
nextLong(). - Примечание по реализации:
- Допускается реализовать этот метод способом, эквивалентным вызову
longs(Long.MAX_VALUE). - Возвращает:
- поток псевдослучайно выбранных значений
long
longs
default LongStream longs(long randomNumberOrigin, long randomNumberBound)
long, каждое из которых находится между указанным начальным значением (включительно) и указанной верхней границей (не включительно).- Требования к реализации:
- Реализация по умолчанию создаёт последовательный поток, многократно вызывающий
nextLong(randomNumberOrigin, randomNumberBound). - Примечание по реализации:
- Допускается реализовать этот метод способом, эквивалентным вызову
longs(Long.MAX_VALUE, randomNumberOrigin, randomNumberBound). - Параметры:
-
randomNumberOrigin— наименьшее возможное значение -
randomNumberBound— верхняя граница (не включительно) для каждого генерируемого значения - Возвращает:
- поток псевдослучайно выбранных значений
long, каждое из которых находится между указанным начальным значением (включительно) и указанной верхней границей (не включительно) - Выбрасывает:
-
IllegalArgumentException— еслиrandomNumberOriginбольше или равноrandomNumberBound
longs
default LongStream longs(long streamSize)
streamSize количество псевдослучайно выбранных значений long.- Требования к реализации:
- Реализация по умолчанию создаёт последовательный поток, многократно вызывающий
nextLong(). - Параметры:
-
streamSize— количество генерируемых значений - Возвращает:
- поток псевдослучайно выбранных значений
long - Выбрасывает:
-
IllegalArgumentException— еслиstreamSizeменьше нуля
longs
default LongStream longs(long streamSize, long randomNumberOrigin, long randomNumberBound)
streamSize количество псевдослучайно выбранных значений long, каждое из которых находится между указанным начальным значением (включительно) и указанной верхней границей (не включительно).- Требования к реализации:
- Реализация по умолчанию создаёт последовательный поток, многократно вызывающий
nextLong(randomNumberOrigin, randomNumberBound). - Параметры:
-
streamSize— количество генерируемых значений -
randomNumberOrigin— наименьшее возможное значение -
randomNumberBound— верхняя граница (не включительно) для каждого генерируемого значения - Возвращает:
- поток псевдослучайно выбранных значений
long, каждое из которых находится между указанным начальным значением (включительно) и указанной верхней границей (не включительно) - Выбрасывает:
-
IllegalArgumentException— еслиstreamSizeменьше нуля илиrandomNumberOriginбольше или равноrandomNumberBound
nextBoolean
default boolean nextBoolean()
boolean. Реализация по умолчанию проверяет старший бит (бит знака) значения, полученного вызовом nextInt(), исходя из того, что некоторые алгоритмы генерации псевдослучайных чисел обеспечивают более высокое статистическое качество старших битов, чем младших.
- Требования к реализации:
- Реализация по умолчанию формирует результат на основе бита знака числа, сгенерированного вызовом
nextInt(). - Возвращает:
- псевдослучайно выбранное значение
boolean
nextBytes
default void nextBytes(byte[] bytes)
- Требования к реализации:
- Реализация по умолчанию получает результаты посредством многократных вызовов
nextLong(). - Примечание по реализации:
- Алгоритм заполнения байтового массива;
void nextBytes(byte[] bytes) { int i = 0; int len = bytes.length; for (int words = len >> 3; words--> 0; ) { long rnd = nextLong(); for (int n = 8; n--> 0; rnd >>>= Byte.SIZE) bytes[i++] = (byte)rnd; } if (i < len) for (long rnd = nextLong(); i < len; rnd >>>= Byte.SIZE) bytes[i++] = (byte)rnd; } - Параметры:
-
bytes— байтовый массив для заполнения псевдослучайными байтами - Выбрасывает:
-
NullPointerException— если bytes равен null
nextFloat
default float nextFloat()
float в диапазоне от нуля (включительно) до единицы (не включительно).- Требования к реализации:
- Реализация по умолчанию использует
Float.PRECISIONстарших битов из результата вызоваnextInt(). - Возвращает:
- псевдослучайное значение
floatв диапазоне от нуля (включительно) до единицы (не включительно)
nextFloat
default float nextFloat(float bound)
float в диапазоне от нуля (включительно) до указанной верхней границы (не включительно).- Требования к реализации:
- Реализация по умолчанию проверяет, что
boundявляется положительным конечным числом типа float. Затем вызываетnextFloat()и масштабирует результат так, чтобы итоговое значение находилось в диапазоне от0.0f(включительно) доbound(не включительно). - Параметры:
-
bound— верхняя граница (не включительно) возвращаемого значения. Должна быть положительной и конечной - Возвращает:
- псевдослучайно выбранное значение
floatв диапазоне от нуля (включительно) до указанной верхней границы (не включительно) - Выбрасывает:
-
IllegalArgumentException— еслиboundне является одновременно положительным и конечным
nextFloat
default float nextFloat(float origin, float bound)
float в диапазоне от указанного начального значения (включительно) до указанной верхней границы (не включительно).- Требования к реализации:
- Реализация по умолчанию проверяет допустимость значений
originиbound, затем вызываетnextFloat(), масштабируя и смещая результат так, чтобы он находился междуoriginиbound(не включительно). - Параметры:
-
origin— наименьшее возвращаемое значение -
bound— верхняя граница (не включительно) - Возвращает:
- псевдослучайно выбранное значение
floatв диапазоне от начального значения (включительно) до верхней границы (не включительно) - Выбрасывает:
-
IllegalArgumentException— еслиoriginне является конечным, илиboundне является конечным, илиoriginбольше или равноbound
nextDouble
default double nextDouble()
double в диапазоне от нуля (включительно) до единицы (не включительно).- Требования к реализации:
- Реализация по умолчанию использует
Double.PRECISIONстарших битов из результата вызоваnextLong(). - Возвращает:
- псевдослучайное значение
doubleв диапазоне от нуля (включительно) до единицы (не включительно)
nextDouble
default double nextDouble(double bound)
double в диапазоне от нуля (включительно) до указанной верхней границы (не включительно).- Требования к реализации:
- Реализация по умолчанию проверяет, что
boundявляется положительным конечным числом типа double. Затем вызываетnextDouble()и масштабирует результат так, чтобы итоговое значение находилось в диапазоне от0.0(включительно) доbound(не включительно). - Параметры:
-
bound— верхняя граница (не включительно) возвращаемого значения. Должна быть положительной и конечной - Возвращает:
- псевдослучайно выбранное значение
doubleв диапазоне от нуля (включительно) до указанной верхней границы (не включительно) - Выбрасывает:
-
IllegalArgumentException— еслиboundне является одновременно положительным и конечным
nextDouble
default double nextDouble(double origin, double bound)
double в диапазоне от указанного начального значения (включительно) до указанной верхней границы (не включительно).- Требования к реализации:
- Реализация по умолчанию проверяет допустимость значений
originиbound, затем вызываетnextDouble(), масштабируя и смещая результат так, чтобы он находился междуoriginиbound(не включительно). - Параметры:
-
origin— наименьшее возвращаемое значение -
bound— верхняя граница (не включительно) возвращаемого значения - Возвращает:
- псевдослучайно выбранное значение
doubleв диапазоне от начального значения (включительно) до верхней границы (не включительно) - Выбрасывает:
-
IllegalArgumentException— еслиoriginне является конечным, илиboundне является конечным, илиoriginбольше или равноbound
nextInt
default int nextInt()
int.- Требования к реализации:
- Реализация по умолчанию использует 32 старших бита из результата вызова
nextLong(). - Возвращает:
- псевдослучайно выбранное значение
int
nextInt
default int nextInt(int bound)
int в диапазоне от нуля (включительно) до указанной верхней границы (не включительно).- Требования к реализации:
- Реализация по умолчанию проверяет, что
boundположительно. Затем она один или несколько раз вызываетnextInt(), чтобы обеспечить равномерное распределение в диапазоне от 0 (включительно) доbound(не включительно). Предполагается, что распределение значенийnextInt()равномерно. - Параметры:
-
bound— верхняя граница (не включительно) возвращаемого значения. Должна быть положительной. - Возвращает:
- псевдослучайно выбранное значение
intв диапазоне от нуля (включительно) до указанной верхней границы (не включительно) - Выбрасывает:
-
IllegalArgumentException— еслиboundне является положительным
nextInt
default int nextInt(int origin, int bound)
int в диапазоне от указанного начального значения (включительно) до указанной верхней границы (не включительно).- Требования к реализации:
- Реализация по умолчанию проверяет, что
originменьшеbound. Затем она один или несколько раз вызываетnextInt(), чтобы обеспечить равномерное распределение в диапазоне отorigin(включительно) доbound(не включительно). Предполагается, что распределение значенийnextInt()равномерно. - Параметры:
-
origin— наименьшее возвращаемое значение -
bound— верхняя граница (не включительно) возвращаемого значения - Возвращает:
- псевдослучайно выбранное значение
intв диапазоне от начального значения (включительно) до верхней границы (не включительно) - Выбрасывает:
-
IllegalArgumentException— еслиoriginбольше или равноbound
nextLong
long nextLong()
long.- Возвращает:
- псевдослучайно выбранное значение
long
nextLong
default long nextLong(long bound)
long в диапазоне от нуля (включительно) до указанной верхней границы (не включительно).- Требования к реализации:
- Реализация по умолчанию проверяет, что
boundположительно. Затем она один или несколько раз вызываетnextLong(), чтобы обеспечить равномерное распределение в диапазоне от 0 (включительно) доbound(не включительно). Предполагается, что распределение значенийnextLong()равномерно. - Параметры:
-
bound— верхняя граница (не включительно) возвращаемого значения. Должна быть положительной. - Возвращает:
- псевдослучайно выбранное значение
longв диапазоне от нуля (включительно) до указанной верхней границы (не включительно) - Выбрасывает:
-
IllegalArgumentException— еслиboundне является положительным
nextLong
default long nextLong(long origin, long bound)
long в диапазоне от указанного начального значения (включительно) до указанной верхней границы (не включительно).- Требования к реализации:
- Реализация по умолчанию проверяет, что
originменьшеbound. Затем она один или несколько раз вызываетnextLong(), чтобы обеспечить равномерное распределение в диапазоне отorigin(включительно) доbound(не включительно). Предполагается, что распределение значенийnextLong()равномерно. - Параметры:
-
origin— наименьшее возвращаемое значение -
bound— верхняя граница (не включительно) возвращаемого значения - Возвращает:
- псевдослучайно выбранное значение
longв диапазоне от начального значения (включительно) до верхней границы (не включительно) - Выбрасывает:
-
IllegalArgumentException— еслиoriginбольше или равноbound
nextGaussian
default double nextGaussian()
double, псевдослучайно выбранное из гауссовского (нормального) распределения со средним значением 0 и стандартным отклонением 1.- Требования к реализации:
- Реализация по умолчанию использует быстрый модифицированный алгоритм зиггурат Макфарланда (в основном табличный; редкие случаи обрабатываются вычислениями и выборкой с отклонением). Также применяется метод алиасов Уокера для выборки из дискретного распределения.
- Возвращает:
- значение
double, псевдослучайно выбранное из гауссовского распределения
nextGaussian
default double nextGaussian(double mean, double stddev)
double, псевдослучайно выбранное из гауссовского (нормального) распределения со средним значением и стандартным отклонением, заданными аргументами.- Требования к реализации:
- Реализация по умолчанию использует быстрый модифицированный алгоритм зиггура Макфарланда (в основном основанный на таблицах; редкие случаи обрабатываются с помощью вычислений и выборки с отбраковкой). Также используется метод алиасов Уокера для выборки из дискретного распределения.
- Параметры:
-
mean— среднее значение гауссовского распределения, из которого производится выборка -
stddev— стандартное отклонение (квадратный корень из дисперсии) гауссовского распределения, из которого производится выборка - Возвращает:
- значение
double, псевдослучайно выбранное из указанного гауссовского распределения - Вызывает исключение:
-
IllegalArgumentException— еслиstddevотрицательно
nextExponential
default double nextExponential()
double, псевдослучайно выбранное из экспоненциального распределения со средним значением 1.- Требования к реализации:
- Реализация по умолчанию использует быстрый модифицированный алгоритм зиггура Макфарланда (в основном основанный на таблицах; редкие случаи обрабатываются с помощью вычислений и выборки с отбраковкой). Также используется метод алиасов Уокера для выборки из дискретного распределения.
- Возвращает:
- неотрицательное значение
double, псевдослучайно выбранное из экспоненциального распределения
© 1993, 2025, 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/25/docs/api/java.base/java/util/random/RandomGenerator.html