|
Spec-Zone .ru
спецификации, руководства, описания, API
|
public class ThreadLocalRandom extends Random
Random генератор, используемый Math class, a ThreadLocalRandom инициализируется с внутренне сгенерированным семенем, которое не может иначе быть изменено. Когда применимый, использование ThreadLocalRandom вместо совместно используемого Random объекты в параллельных программах будут обычно встречаться с намного меньшим количеством издержек и конкуренции. Использование ThreadLocalRandom является особенно соответствующим когда многократные задачи (например, каждый a ForkJoinTask) используйте случайные числа параллельно в пулах потоков. Использования этого class должны обычно иметь форму: ThreadLocalRandom.current().nextX(...) (где X Int, Long, и т.д.). Когда все использования имеют эту форму, никогда не возможно случайно совместно использовать a ThreadLocalRandom через многократные потоки.
Этот class также обеспечивает дополнительные обычно используемые ограниченные случайные методы генерации.
| Модификатор и Тип | Метод и Описание |
|---|---|
static ThreadLocalRandom |
current()
Возвращает текущий поток
ThreadLocalRandom. |
DoubleStream |
doubles()
Возвращает поток псевдослучайных, однородно распределенных
double значения между 0.0 и 1.0 от последовательности этого генератора случайных чисел. |
DoubleStream |
gaussians()
Возвращает поток псевдослучайных, Гауссовых ("обычно") распределяемых
double значения со средним значением 0.0 и стандартное отклонение 1.0 от последовательности этого генератора случайных чисел. |
IntStream |
ints()
Возвращает поток псевдослучайных, однородно распределенных
integer значения от последовательности этого генератора случайных чисел. |
LongStream |
longs()
Возвращает поток псевдослучайных, однородно распределенных
long значения от последовательности этого генератора случайных чисел. |
protected int |
next(int bits)
Генерирует следующее псевдослучайное число.
|
double |
nextDouble(double n)
Возвращает псевдослучайное, однородно распределенное
double значение между 0 (содержащий) и указанное (монопольное) значение. |
double |
nextDouble(double least, double bound)
Возвращает псевдослучайное, однородно распределенное значение между данным наименьшее количество значения (включительно) и связанный (монопольный).
|
double |
nextGaussian()
Возвращает следующее псевдослучайное, Гауссово ("обычно") распределяемое
double значение со средним значением 0.0 и стандартное отклонение 1.0 от последовательности этого генератора случайных чисел. |
int |
nextInt(int least, int bound)
Возвращает псевдослучайное, однородно распределенное значение между данным наименьшее количество значения (включительно) и связанный (монопольный).
|
long |
nextLong(long n)
Возвращает псевдослучайное, однородно распределенное значение между 0 (содержащий) и указанное (монопольное) значение.
|
long |
nextLong(long least, long bound)
Возвращает псевдослучайное, однородно распределенное значение между данным наименьшее количество значения (включительно) и связанный (монопольный).
|
void |
setSeed(long seed)
Броски
UnsupportedOperationException. |
nextBoolean, nextBytes, nextDouble, nextFloat, nextInt, nextInt, nextLongpublic static ThreadLocalRandom current()
ThreadLocalRandom.ThreadLocalRandompublic void setSeed(long seed)
UnsupportedOperationException. Установка семян в этом генераторе не поддерживается.setSeed в class Randomseed - начальное семяUnsupportedOperationException - всегдаprotected int next(int bits)
RandomОбщий контракт next это, это возвращается int значение и если параметр bits между 1 и 32 (включительно), тогда то, что много битов младшего разряда возвращенного значения будут (приблизительно) независимо выбранными битовыми значениями, каждое из которых (приблизительно), одинаково вероятно, будет 0 или 1. Метод next реализуется class Random атомарно обновляя семя к
(seed * 0x5DEECE66DL + 0xBL) & ((1L << 48) - 1) и возврат (int)(seed >>> (48 - bits)). Это - линейный congruential генератор псевдослучайного числа, как определено Д. Х. Лехмером и описало Дональдом Э. Нутом в Искусстве Программирования, Объем 3: получисловые Алгоритмы, раздел 3.2.1.public int nextInt(int least,
int bound)
least - наименьшее количество значения возвратилосьbound - (монопольная) верхняя границаIllegalArgumentException - если наименее больше чем или равный связанномуpublic long nextLong(long n)
n - привязанный случайное число, которое будет возвращено. Должно быть положительным.IllegalArgumentException - если n не положителенpublic IntStream ints()
Randominteger значения от последовательности этого генератора случайных чисел. Значения получаются как необходимый, вызывая Random.nextInt().public LongStream longs()
Randomlong значения от последовательности этого генератора случайных чисел. Значения получаются как необходимый, вызывая Random.nextLong().public DoubleStream doubles()
Randomdouble значения между 0.0 и 1.0 от последовательности этого генератора случайных чисел. Значения получаются как необходимый, вызывая Random.nextDouble().public DoubleStream gaussians()
Randomdouble значения со средним значением 0.0 и стандартное отклонение 1.0 от последовательности этого генератора случайных чисел. Значения получаются как необходимый, вызывая Random.nextGaussian().public long nextLong(long least,
long bound)
least - наименьшее количество значения возвратилосьbound - (монопольная) верхняя границаIllegalArgumentException - если наименее больше чем или равный связанномуpublic double nextDouble(double n)
double значение между 0 (содержащий) и указанное (монопольное) значение.n - привязанный случайное число, которое будет возвращено. Должно быть положительным.IllegalArgumentException - если n не положителенpublic double nextDouble(double least,
double bound)
least - наименьшее количество значения возвратилосьbound - (монопольная) верхняя границаIllegalArgumentException - если наименее больше чем или равный связанномуpublic double nextGaussian()
Randomdouble значение со средним значением 0.0 и стандартное отклонение 1.0 от последовательности этого генератора случайных чисел. Общий контракт nextGaussian тот double значение, выбранное из (приблизительно) обычного нормального распределения со средним значением 0.0 и стандартное отклонение 1.0, псевдобеспорядочно сгенерирован и возвращен.
Метод nextGaussian реализуется class 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;
}
} Это использует полярный метод Г. Э. П. Поле, М. Э. Мюллер, и Г. Марсэглия, как описано Дональдом Э. Нутом в Искусстве Программирования, Объем 3: получисловые Алгоритмы, раздел 3.4.1, подраздел C, алгоритм П. Ноут, что это генерирует два независимых значения за счет только одного звонка StrictMath.log и один звонок StrictMath.sqrt.nextGaussian в class Randomdouble значение со средним значением 0.0 и стандартное отклонение 1.0 от последовательности этого генератора случайных чисел
Для дальнейшей ссылки API и документации разработчика, см. Java Документация SE. Та документация содержит более подробные, предназначенные разработчиком описания, с концептуальными краткими обзорами, определениями сроков, обходных решений, и рабочих примеров кода.
Авторское право © 1993, 2013, Oracle и/или его филиалы. Все права защищены.
Проект сборка-b92