Класс 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
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
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
Методы, объявленные в интерфейсе RandomGenerator
equiDoubles, isDeprecated, nextDouble, nextDouble, nextExponential, nextFloat, nextFloat, nextGaussian, nextInt, nextLong, nextLong
Подробное описание конструкторов
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.
https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/Random.html