Spec-Zone.ru › OpenJDK 27

Класс Random

java.lang.Object
java.util.Random
Все реализуемые интерфейсы:
Serializable, RandomGenerator
Прямые известные подклассы:
SecureRandom, ThreadLocalRandom
public class Random extends Object implements RandomGenerator, Serializable
Экземпляр этого класса используется для генерации потока псевдослучайных чисел; его период составляет всего 248. Класс использует 48-битное начальное значение, которое модифицируется с помощью линейной конгруэнтной формулы. (См. Donald E. Knuth, Искусство программирования, том 2, третье издание: получисленные алгоритмы, раздел 3.2.1.)

Если два экземпляра Random созданы с одним и тем же начальным значением и для каждого выполнена одна и та же последовательность вызовов методов, они сгенерируют и вернут идентичные последовательности чисел. Чтобы гарантировать это свойство, для класса Random заданы конкретные алгоритмы. Для обеспечения полной переносимости кода Java реализации Java должны использовать все алгоритмы, приведённые здесь для класса Random. Однако подклассам класса Random разрешено использовать другие алгоритмы при условии, что они соблюдают общие контракты всех методов.

Алгоритмы, реализованные классом Random, используют служебный метод protected, который при каждом вызове может выдавать до 32 псевдослучайно сгенерированных битов.

Во многих приложениях проще использовать метод Math.random().

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

Экземпляры java.util.Random не являются криптографически стойкими. Для приложений, чувствительных к безопасности, рассмотрите возможность использования SecureRandom — криптографически стойкого генератора псевдослучайных чисел.

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

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

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

RandomGenerator.ArbitrarilyJumpableGenerator, RandomGenerator.JumpableGenerator, RandomGenerator.LeapableGenerator, RandomGenerator.SplittableGenerator, RandomGenerator.StreamableGenerator
Модификатор и тип Интерфейс Описание
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.

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

Конструктор Описание
Random()
Создаёт новый генератор случайных чисел.
Random(long seed)
Создаёт новый генератор случайных чисел, используя одно начальное значение long.

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

Модификатор и тип Метод Описание
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, каждое из которых соответствует заданной нижней границе включительно и верхней границе не включительно.
static Random from(RandomGenerator generator)
Возвращает экземпляр Random, делегирующий вызовы методов аргументу RandomGenerator.
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 с равномерным распределением из последовательности этого генератора случайных чисел.
void nextBytes(byte[] bytes)
Генерирует случайные байты и помещает их в предоставленный пользователем массив байтов.
double nextDouble()
Возвращает следующее псевдослучайное значение double с равномерным распределением в диапазоне от 0.0 до 1.0 из последовательности этого генератора случайных чисел.
float nextFloat()
Возвращает следующее псевдослучайное значение float с равномерным распределением в диапазоне от 0.0 до 1.0 из последовательности этого генератора случайных чисел.
double nextGaussian()
Возвращает следующее псевдослучайное значение double с распределением Гаусса («нормальным»), средним значением 0.0 и стандартным отклонением 1.0 из последовательности этого генератора случайных чисел.
int nextInt()
Возвращает следующее псевдослучайное значение int с равномерным распределением из последовательности этого генератора случайных чисел.
int nextInt(int bound)
Возвращает псевдослучайное значение int с равномерным распределением в диапазоне от 0 включительно до указанного значения не включительно, полученное из последовательности этого генератора случайных чисел.
long nextLong()
Возвращает следующее псевдослучайное значение long с равномерным распределением из последовательности этого генератора случайных чисел.
void setSeed(long seed)
Устанавливает или обновляет начальное значение этого генератора случайных чисел, используя предоставленное значение начального значения long (необязательная операция).

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

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Модификатор и тип Метод Описание
protected Object clone()
Создаёт и возвращает копию этого объекта.
boolean equals(Object obj)
Указывает, равен ли этот объект другому объекту.
protected void finalize()
Устарело, планируется удаление: этот элемент API подлежит удалению в будущей версии.
Финализация объявлена устаревшей и подлежит удалению в одном из будущих выпусков.
final Class<?> getClass()
Возвращает класс времени выполнения этого Object.
int hashCode()
Возвращает хеш-код этого объекта.
final void notify()
Пробуждает один поток, ожидающий на мониторе этого объекта.
final void notifyAll()
Пробуждает все потоки, ожидающие на мониторе этого объекта.
String toString()
Возвращает строковое представление объекта.
final void wait()
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt.
final void wait(long timeoutMillis)
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо до истечения заданного промежутка реального времени.
final void wait(long timeoutMillis, int nanos)
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо до истечения заданного промежутка реального времени.

Методы, объявленные в интерфейсе RandomGenerator

equiDoubles, isDeprecated, nextDouble, nextDouble, nextExponential, nextFloat, nextFloat, nextGaussian, nextInt, nextLong, nextLong
Модификатор и тип Метод Описание
default DoubleStream equiDoubles(double left, double right, boolean isLeftIncluded, boolean isRightIncluded)
Возвращает практически неограниченный поток псевдослучайно выбранных значений double, каждое из которых находится между указанной нижней границей left и указанной верхней границей right.
default boolean isDeprecated()
Возвращает true, если реализация RandomGenerator (алгоритм) помечена как устаревшая.
default double nextDouble(double bound)
Возвращает псевдослучайно выбранное значение double в диапазоне от нуля включительно до указанной верхней границы не включительно.
default double nextDouble(double origin, double bound)
Возвращает псевдослучайно выбранное значение double в диапазоне от указанной нижней границы включительно до указанной верхней границы не включительно.
default double nextExponential()
Возвращает неотрицательное значение double, псевдослучайно выбранное из экспоненциального распределения со средним значением 1.
default float nextFloat(float bound)
Возвращает псевдослучайно выбранное значение float в диапазоне от нуля включительно до указанной верхней границы не включительно.
default float nextFloat(float origin, float bound)
Возвращает псевдослучайно выбранное значение float в диапазоне от указанной нижней границы включительно до указанной верхней границы не включительно.
default double nextGaussian(double mean, double stddev)
Возвращает значение double, псевдослучайно выбранное из распределения Гаусса (нормального распределения) со средним значением и стандартным отклонением, заданными аргументами.
default int nextInt(int origin, int bound)
Возвращает псевдослучайно выбранное значение int в диапазоне от указанной нижней границы включительно до указанной верхней границы не включительно.
default long nextLong(long bound)
Возвращает псевдослучайно выбранное значение long в диапазоне от нуля включительно до указанной верхней границы не включительно.
default long nextLong(long origin, long bound)
Возвращает псевдослучайно выбранное значение long в диапазоне от указанной нижней границы включительно до указанной верхней границы не включительно.

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

Random

public Random()
Создает новый генератор случайных чисел. Этот конструктор задает начальное значение генератора случайных чисел, которое с большой вероятностью будет отличаться от значений при любых других вызовах этого конструктора.

Random

public Random(long seed)
Создает новый генератор случайных чисел, используя одно начальное значение типа long. Начальное значение — это исходное значение внутреннего состояния генератора псевдослучайных чисел, которое поддерживается методом next(int).
Требования к реализации:
Вызов new Random(seed) эквивалентен:
Random rnd = new Random();
rnd.setSeed(seed);
Параметры:
seed — начальное значение
См. также:
  • setSeed(long)

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

from

public static Random from(RandomGenerator generator)
Возвращает экземпляр Random, который делегирует вызовы методов аргументу RandomGenerator. Если генератор является экземпляром Random, он возвращается без изменений. В противном случае этот метод возвращает экземпляр Random, который делегирует генератору все методы, кроме setSeed. Метод setSeed возвращенного экземпляра всегда выбрасывает исключение UnsupportedOperationException. Возвращенный экземпляр не поддерживает сериализацию.
Параметры:
generator — объект, которому делегируются вызовы RandomGenerator
Возвращает:
делегирующий экземпляр Random
Выбрасывает:
NullPointerException — если генератор равен null
Начиная с версии:
19

setSeed

public void setSeed(long seed)
Задает или обновляет начальное значение этого генератора случайных чисел, используя предоставленное значение типа long (необязательная операция).
Требования к реализации:
Реализация в этом классе изменяет состояние генератора случайных чисел так, чтобы оно совпадало с состоянием сразу после создания с помощью new Random(seed). Она атомарно обновляет начальное значение до
(seed ^ 0x5DEECE66DL) & ((1L << 48) - 1)
и сбрасывает флаг haveNextNextGaussian, используемый методом nextGaussian(). Обратите внимание, что используются только 48 бит заданного начального значения.
Параметры:
seed — начальное значение
Выбрасывает:
UnsupportedOperationException — если операция setSeed не поддерживается этим генератором случайных чисел

next

protected int next(int bits)
Генерирует следующее псевдослучайное число. Этот метод возвращает значение типа int такое, что, если аргумент bits находится в диапазоне от 1 до 32 включительно, соответствующее количество младших битов возвращенного значения будет (приблизительно) независимо выбрано из значений битов, каждое из которых с (приблизительно) одинаковой вероятностью равно 0 или 1.
Примечание к API:
Остальные методы этого класса, генерирующие случайные значения, реализованы на основе этого метода, поэтому подклассы могут переопределить только этот метод, чтобы задать другой источник псевдослучайных чисел для всего класса.
Требования к реализации:
Реализация в этом классе атомарно обновляет начальное значение до
(seed * 0x5DEECE66DL + 0xBL) & ((1L << 48) - 1)
и возвращает
(int)(seed >>> (48 - bits)).

Это линейный конгруэнтный генератор псевдослучайных чисел, определенный Д. Х. Лемером и описанный Дональдом Э. Кнутом в книге Искусство программирования, том 2, третье издание: Полу численные алгоритмы, раздел 3.2.1.

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

nextBytes

public void nextBytes(byte[] bytes)
Генерирует случайные байты и помещает их в предоставленный пользователем массив байтов. Количество сгенерированных случайных байтов равно длине массива байтов.
Определено в:
nextBytes в интерфейсе RandomGenerator
Требования к реализации:
Метод nextBytes реализован классом Random так, как если бы он выполнял:
public void nextBytes(byte[] bytes) {
  for (int i = 0; i < bytes.length; )
    for (int rnd = nextInt(), n = Math.min(bytes.length - i, 4);
         n-- > 0; rnd >>= 8)
      bytes[i++] = (byte)rnd;
}
Параметры:
bytes — массив байтов для заполнения случайными байтами
Выбрасывает:
NullPointerException — если массив байтов равен null
Начиная с версии:
1.1

nextInt

public int nextInt()
Возвращает следующее псевдослучайное равномерно распределенное значение типа int из последовательности этого генератора случайных чисел. Согласно общему контракту nextInt псевдослучайным образом генерируется и возвращается одно значение типа int. Все 232 возможных значений типа int выдаются с (приблизительно) одинаковой вероятностью.
Определено в:
nextInt в интерфейсе RandomGenerator
Требования к реализации:
Метод nextInt реализован классом Random так, как если бы он выполнял:
public int nextInt() {
  return next(32);
}
Возвращает:
следующее псевдослучайное равномерно распределенное значение типа int из последовательности этого генератора случайных чисел

nextInt

public int nextInt(int bound)
Возвращает псевдослучайное равномерно распределенное значение типа int в диапазоне от 0 (включительно) до заданного значения (не включительно), выбранное из последовательности этого генератора случайных чисел. Согласно общему контракту nextInt псевдослучайным образом генерируется и возвращается одно значение типа int из заданного диапазона. Все bound возможных значений типа int выдаются с (приблизительно) одинаковой вероятностью.
Определено в:
nextInt в интерфейсе RandomGenerator
Требования к реализации:
Метод nextInt(int bound) реализован классом Random так, как если бы он выполнял:
public int nextInt(int bound) {
  if (bound <= 0)
    throw new IllegalArgumentException("bound must be positive");

  if ((bound & -bound) == bound)  // i.e., bound is a power of 2
    return (int)((bound * (long)next(31)) >> 31);

  int bits, val;
  do {
      bits = next(31);
      val = bits % bound;
  } while (bits - val + (bound-1) < 0);
  return val;
}

Оговорка «приблизительно» в приведенном выше описании используется только потому, что следующий метод является лишь приблизительно несмещенным источником независимо выбираемых битов. Если бы он был идеальным источником случайно выбранных битов, показанный алгоритм выбирал бы значения int из указанного диапазона с идеальной равномерностью.

Алгоритм немного хитро устроен. Он отбрасывает значения, которые привели бы к неравномерному распределению (поскольку 2^31 не делится на n). Вероятность отбрасывания значения зависит от n. Худший случай — n=2^30+1, когда вероятность отбрасывания равна 1/2, а ожидаемое число итераций до завершения цикла — 2.

Если n является степенью двойки, алгоритм обрабатывает этот случай особым образом: он возвращает нужное количество старших битов базового генератора псевдослучайных чисел. Без специальной обработки возвращалось бы нужное количество младших битов. Известно, что линейные конгруэнтные генераторы псевдослучайных чисел, подобные реализованному в этом классе, имеют короткие периоды в последовательности значений младших битов. Поэтому такая специальная обработка значительно увеличивает длину последовательности значений, возвращаемых последовательными вызовами этого метода, если n — небольшая степень двойки.

Параметры:
bound — верхняя граница (не включительно). Должна быть положительной.
Возвращает:
следующее псевдослучайное равномерно распределенное значение типа int в диапазоне от нуля (включительно) до bound (не включительно) из последовательности этого генератора случайных чисел
Выбрасывает:
IllegalArgumentException — если верхняя граница не является положительной
Начиная с версии:
1.2

nextLong

public long nextLong()
Возвращает следующее псевдослучайное равномерно распределенное значение типа long из последовательности этого генератора случайных чисел. Согласно общему контракту nextLong псевдослучайным образом генерируется и возвращается одно значение типа long.
Определено в:
nextLong в интерфейсе RandomGenerator
Требования к реализации:
Метод nextLong реализован классом Random так, как если бы он выполнял:
public long nextLong() {
  return ((long)next(32) << 32) + next(32);
}
Поскольку класс Random использует начальное значение длиной всего 48 бит, этот алгоритм не возвращает все возможные значения типа long.
Возвращает:
следующее псевдослучайное равномерно распределенное значение типа long из последовательности этого генератора случайных чисел

nextBoolean

public boolean nextBoolean()
Возвращает следующее псевдослучайное равномерно распределенное значение типа boolean из последовательности этого генератора случайных чисел. Согласно общему контракту nextBoolean псевдослучайным образом генерируется и возвращается одно значение типа boolean. Значения true и false выдаются с (приблизительно) одинаковой вероятностью.
Определено в:
nextBoolean в интерфейсе RandomGenerator
Требования к реализации:
Метод nextBoolean реализован классом Random так, как если бы он выполнял:
public boolean nextBoolean() {
  return next(1) != 0;
}
Возвращает:
следующее псевдослучайное равномерно распределенное значение типа boolean из последовательности этого генератора случайных чисел
Начиная с версии:
1.2

nextFloat

public float nextFloat()
Возвращает следующее псевдослучайное равномерно распределенное значение типа float в диапазоне от 0.0 до 1.0 из последовательности этого генератора случайных чисел.

Согласно общему контракту nextFloat псевдослучайным образом генерируется и возвращается одно значение типа float, выбранное с (приблизительно) равномерным распределением в диапазоне от 0.0f (включительно) до 1.0f (не включительно). Все 224 возможных значений типа float вида m x 2-24, где m — положительное целое число, меньшее 224, выдаются с (приблизительно) одинаковой вероятностью.

Определено в:
nextFloat в интерфейсе RandomGenerator
Требования к реализации:
Метод nextFloat реализован классом Random так, как если бы он выполнял:
public float nextFloat() {
  return next(24) / ((float)(1 << 24));
}

Оговорка «приблизительно» в приведенном выше описании используется только потому, что следующий метод является лишь приблизительно несмещенным источником независимо выбираемых битов. Если бы он был идеальным источником случайно выбранных битов, показанный алгоритм выбирал бы значения float из указанного диапазона с идеальной равномерностью.

[В ранних версиях Java результат ошибочно вычислялся так:

 return next(30) / ((float)(1 << 30));
Это может показаться эквивалентным, если не лучшим вариантом, но на самом деле такой подход вносил небольшую неравномерность из-за смещения при округлении чисел с плавающей точкой: вероятность того, что младший бит значащей части будет равен 0, была немного выше, чем вероятность того, что он будет равен 1.]
Возвращает:
следующее псевдослучайное равномерно распределенное значение типа float в диапазоне от 0.0f до 1.0f из последовательности этого генератора случайных чисел

nextDouble

public double nextDouble()
Возвращает следующее псевдослучайное равномерно распределенное значение типа double в диапазоне от 0.0 до 1.0 из последовательности этого генератора случайных чисел.

Согласно общему контракту nextDouble псевдослучайным образом генерируется и возвращается одно значение типа double, выбранное с (приблизительно) равномерным распределением в диапазоне от 0.0d (включительно) до 1.0d (не включительно).

Определено в:
nextDouble в интерфейсе RandomGenerator
Требования к реализации:
Метод nextDouble реализован классом Random так, как если бы он выполнял:
public double nextDouble() {
  return (((long)next(26) << 27) + next(27))
    / (double)(1L << 53);
}

Оговорка «приблизительно» в приведенном выше описании используется только потому, что метод next является лишь приблизительно несмещенным источником независимо выбираемых битов. Если бы он был идеальным источником случайно выбранных битов, показанный алгоритм выбирал бы значения double из указанного диапазона с идеальной равномерностью.

[В ранних версиях Java результат ошибочно вычислялся так:

 return (((long)next(27) << 27) + next(27)) / (double)(1L << 54);
Это может показаться эквивалентным, если не лучшим вариантом, но на самом деле такой подход вносил значительную неравномерность из-за смещения при округлении чисел с плавающей точкой: вероятность того, что младший бит значащей части будет равен 0, была втрое выше, чем вероятность того, что он будет равен 1! На практике эта неравномерность, вероятно, не имеет большого значения, но мы стремимся к совершенству.]
Возвращает:
следующее псевдослучайное равномерно распределенное значение типа double в диапазоне от 0.0 до 1.0 из последовательности этого генератора случайных чисел
См. также:
  • Math.random()

nextGaussian

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

Согласно общему контракту nextGaussian псевдослучайным образом генерируется и возвращается одно значение типа double, выбранное из (приблизительно) обычного нормального распределения со средним значением 0.0 и стандартным отклонением 1.0.

Определено в:
nextGaussian в интерфейсе RandomGenerator
Требования к реализации:
Метод nextGaussian реализован классом Random как потокобезопасная версия следующего кода:
private double nextNextGaussian;
private boolean haveNextNextGaussian = false;

public double nextGaussian() {
  if (haveNextNextGaussian) {
    haveNextNextGaussian = false;
    return nextNextGaussian;
  } else {
    double v1, v2, s;
    do {
      v1 = 2 * nextDouble() - 1;   // between -1.0 and 1.0
      v2 = 2 * nextDouble() - 1;   // between -1.0 and 1.0
      s = v1 * v1 + v2 * v2;
    } while (s >= 1 || s == 0);
    double multiplier = StrictMath.sqrt(-2 * StrictMath.log(s)/s);
    nextNextGaussian = v2 * multiplier;
    haveNextNextGaussian = true;
    return v1 * multiplier;
  }
}
Здесь используется полярный метод Дж. Э. П. Бокса, М. Э. Мюллера и Дж. Марсальи, описанный Дональдом Э. Кнутом в книге Искусство программирования, том 2, третье издание: Полу численные алгоритмы, раздел 3.4.1, подраздел C, алгоритм P. Обратите внимание, что он генерирует два независимых значения ценой всего одного вызова StrictMath.log и одного вызова StrictMath.sqrt.
Возвращает:
следующее псевдослучайное значение типа double с гауссовым (нормальным) распределением, средним значением 0.0 и стандартным отклонением 1.0 из последовательности этого генератора случайных чисел

ints

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

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

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

ints

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

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

Определено в:
ints в интерфейсе RandomGenerator
Примечание к реализации:
Этот метод реализован так, чтобы быть эквивалентным 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
Параметры:
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(Long.MAX_VALUE, randomNumberOrigin, randomNumberBound).
Параметры:
randomNumberOrigin — начальная граница (включительно) каждого случайного значения
randomNumberBound — верхняя граница (не включительно) каждого случайного значения
Возвращает:
поток псевдослучайных значений типа int, каждое из которых находится между заданной начальной границей (включительно) и верхней границей (не включительно)
Выбрасывает:
IllegalArgumentException — если randomNumberOrigin больше либо равно randomNumberBound
Начиная с версии:
1.8

longs

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

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

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

longs

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

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

Определено в:
longs в интерфейсе RandomGenerator
Примечание к реализации:
Этот метод реализован так, чтобы быть эквивалентным 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
Параметры:
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(Long.MAX_VALUE, randomNumberOrigin, randomNumberBound).
Параметры:
randomNumberOrigin — начальная граница (включительно) каждого случайного значения
randomNumberBound — верхняя граница (не включительно) каждого случайного значения
Возвращает:
поток псевдослучайных значений типа long, каждое из которых находится между заданной начальной границей (включительно) и верхней границей (не включительно)
Выбрасывает:
IllegalArgumentException — если randomNumberOrigin больше либо равно randomNumberBound
Начиная с версии:
1.8

doubles

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

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

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

doubles

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

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

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

doubles

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

doubles

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

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в разделе Документация Java SE, содержащем более подробные описания для разработчиков, концептуальные обзоры, определения терминов, обходные решения и примеры работающего кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или ее дочерних компаний в США и других странах.
Авторское право © 1993, 2026, Oracle и/или ее дочерние компании, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 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.

Spec-Zone.ru

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