Класс Random
- Все реализуемые интерфейсы:
Serializable, RandomGenerator
- Прямые известные подклассы:
SecureRandom, ThreadLocalRandom
public class Random extends Object implements RandomGenerator, Serializable
Если два экземпляра 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. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
DoubleStream |
doubles() |
Возвращает практически неограниченный поток псевдослучайных значений
double, каждое из которых находится в диапазоне от нуля включительно до единицы не включительно. |
DoubleStream |
doubles |
Возвращает практически неограниченный поток псевдослучайных значений
double, каждое из которых соответствует заданной нижней границе включительно и верхней границе не включительно. |
DoubleStream |
doubles |
Возвращает поток, генерирующий заданное количество streamSize псевдослучайных значений double, каждое из которых находится в диапазоне от нуля включительно до единицы не включительно. |
DoubleStream |
doubles |
Возвращает поток, генерирующий заданное количество streamSize псевдослучайных значений double, каждое из которых соответствует заданной нижней границе включительно и верхней границе не включительно. |
static Random |
from |
Возвращает экземпляр Random, делегирующий вызовы методов аргументу RandomGenerator. |
IntStream |
ints() |
Возвращает практически неограниченный поток псевдослучайных значений int. |
IntStream |
ints |
Возвращает практически неограниченный поток псевдослучайных значений
int, каждое из которых соответствует заданной нижней границе включительно и верхней границе не включительно. |
IntStream |
ints |
Возвращает поток, генерирующий заданное количество streamSize псевдослучайных значений int. |
IntStream |
ints |
Возвращает поток, генерирующий заданное количество streamSize псевдослучайных значений int, каждое из которых соответствует заданной нижней границе включительно и верхней границе не включительно. |
LongStream |
longs() |
Возвращает практически неограниченный поток псевдослучайных значений long. |
LongStream |
longs |
Возвращает поток, генерирующий заданное количество streamSize псевдослучайных значений long. |
LongStream |
longs |
Возвращает практически неограниченный поток псевдослучайных значений
long, каждое из которых соответствует заданной нижней границе включительно и верхней границе не включительно. |
LongStream |
longs |
Возвращает поток, генерирующий заданное количество streamSize псевдослучайных значений long, каждое из которых соответствует заданной нижней границе включительно и верхней границе не включительно. |
protected int |
next |
Генерирует следующее псевдослучайное число. |
boolean |
nextBoolean() |
Возвращает следующее псевдослучайное значение boolean с равномерным распределением из последовательности этого генератора случайных чисел. |
void |
nextBytes |
Генерирует случайные байты и помещает их в предоставленный пользователем массив байтов. |
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 с равномерным распределением в диапазоне от 0 включительно до указанного значения не включительно, полученное из последовательности этого генератора случайных чисел. |
long |
nextLong() |
Возвращает следующее псевдослучайное значение long с равномерным распределением из последовательности этого генератора случайных чисел. |
void |
setSeed |
Устанавливает или обновляет начальное значение этого генератора случайных чисел, используя предоставленное значение начального значения long (необязательная операция). |
Методы, объявленные в классе Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait | Модификатор и тип | Метод | Описание |
|---|---|---|
protected Object |
clone() |
Создаёт и возвращает копию этого объекта. |
boolean |
equals |
Указывает, равен ли этот объект другому объекту. |
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 |
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо до истечения заданного промежутка реального времени. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо до истечения заданного промежутка реального времени. |
Методы, объявленные в интерфейсе RandomGenerator
equiDoubles, isDeprecated, nextDouble, nextDouble, nextExponential, nextFloat, nextFloat, nextGaussian, nextInt, nextLong, nextLong | Модификатор и тип | Метод | Описание |
|---|---|---|
default DoubleStream |
equiDoubles |
Возвращает практически неограниченный поток псевдослучайно выбранных значений double, каждое из которых находится между указанной нижней границей left и указанной верхней границей right. |
default boolean |
isDeprecated() |
Возвращает true, если реализация RandomGenerator (алгоритм) помечена как устаревшая. |
default double |
nextDouble |
Возвращает псевдослучайно выбранное значение double в диапазоне от нуля включительно до указанной верхней границы не включительно. |
default double |
nextDouble |
Возвращает псевдослучайно выбранное значение double в диапазоне от указанной нижней границы включительно до указанной верхней границы не включительно. |
default double |
nextExponential() |
Возвращает неотрицательное значение double, псевдослучайно выбранное из экспоненциального распределения со средним значением 1. |
default float |
nextFloat |
Возвращает псевдослучайно выбранное значение float в диапазоне от нуля включительно до указанной верхней границы не включительно. |
default float |
nextFloat |
Возвращает псевдослучайно выбранное значение float в диапазоне от указанной нижней границы включительно до указанной верхней границы не включительно. |
default double |
nextGaussian |
Возвращает значение double, псевдослучайно выбранное из распределения Гаусса (нормального распределения) со средним значением и стандартным отклонением, заданными аргументами. |
default int |
nextInt |
Возвращает псевдослучайно выбранное значение int в диапазоне от указанной нижней границы включительно до указанной верхней границы не включительно. |
default long |
nextLong |
Возвращает псевдослучайно выбранное значение long в диапазоне от нуля включительно до указанной верхней границы не включительно. |
default long |
nextLong |
Возвращает псевдослучайно выбранное значение long в диапазоне от указанной нижней границы включительно до указанной верхней границы не включительно. |
Подробное описание конструкторов
Random
public Random()
Random
public Random(long seed)
long. Начальное значение — это исходное значение внутреннего состояния генератора псевдослучайных чисел, которое поддерживается методом next(int).- Требования к реализации:
- Вызов
new Random(seed)эквивалентен:Random rnd = new Random(); rnd.setSeed(seed); - Параметры:
-
seed— начальное значение - См. также:
Подробное описание методов
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 результат ошибочно вычислялся так:
Это может показаться эквивалентным, если не лучшим вариантом, но на самом деле такой подход вносил небольшую неравномерность из-за смещения при округлении чисел с плавающей точкой: вероятность того, что младший бит значащей части будет равен 0, была немного выше, чем вероятность того, что он будет равен 1.]return next(30) / ((float)(1 << 30)); - Возвращает:
- следующее псевдослучайное равномерно распределенное значение типа
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 результат ошибочно вычислялся так:
Это может показаться эквивалентным, если не лучшим вариантом, но на самом деле такой подход вносил значительную неравномерность из-за смещения при округлении чисел с плавающей точкой: вероятность того, что младший бит значащей части будет равен 0, была втрое выше, чем вероятность того, что он будет равен 1! На практике эта неравномерность, вероятно, не имеет большого значения, но мы стремимся к совершенству.]return (((long)next(27) << 27) + next(27)) / (double)(1L << 54); - Возвращает:
- следующее псевдослучайное равномерно распределенное значение типа
doubleв диапазоне от0.0до1.0из последовательности этого генератора случайных чисел - См. также:
nextGaussian
public double nextGaussian()
double с гауссовым (нормальным) распределением, средним значением 0.0 и стандартным отклонением 1.0 из последовательности этого генератора случайных чисел. Согласно общему контракту nextGaussian псевдослучайным образом генерируется и возвращается одно значение типа double, выбранное из (приблизительно) обычного нормального распределения со средним значением 0.0 и стандартным отклонением 1.0.
- Определено в:
-
nextGaussianв интерфейсеRandomGenerator - Требования к реализации:
- Метод
nextGaussianреализован классомRandomкак потокобезопасная версия следующего кода:
Здесь используется полярный метод Дж. Э. П. Бокса, М. Э. Мюллера и Дж. Марсальи, описанный Дональдом Э. Кнутом в книге Искусство программирования, том 2, третье издание: Полу численные алгоритмы, раздел 3.4.1, подраздел C, алгоритм P. Обратите внимание, что он генерирует два независимых значения ценой всего одного вызова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; } }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
© 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.