Главная » Java » Random

0

 

   Класс позволяет создавать объекты, служащие для управления независимыми последовательностями псевдослучайных чисел. Если же вам необходима последовательность чисел типа double и вас особо не заботит, что она представляет собой на самом деле, целесообразно воспользоваться статическим методом Java.lang.Math. random, который при первом вызове создает единственный объект и возвращает с его помощью псевдослучайные числа типа double из интервала от 0.0 до 1.0, исключая 1.0 (за более подробными сведениями о классе Math обращайтесь к разделу 17.6). Если же вы испытываете потребность в более эффективных рычагах управления содержимым последовательности чисел — например, средствах задания ее исходного значения (seed), — удобнее прибегнуть к помощи объекта . Ниже кратко описаны конструкторы и методы класса .

public ()

Создает новый объект генератора псевдослучайных чисел. Исходное значение последовательности чисел выбирается с учетом текущего значения системного времени.

public (long seed)

Создает новый объект генератора псевдослучайных чисел, последовательность которых начинается с указанного исходного значения seed. Два объекта , сконструированные с заданием одной и той же величины seed, будут генерировать одинаковые последовательности чисел.

public void setSeed(long seed)

Изменяет исходное значение последовательности псевдослучайных чисел, генерируемых текущим объектом , на seed. Метод может вызываться в любой момент, и обращение к нему приводит к тому, что текущая последовательность сбрасывается и генератор начинает отсчет чисел с заданного значения seed.

public boolean nextBoolean()

Возвращает очередное псевдослучайное равномерно распределенное значе

ние типа boolean.

public int nextlnt()

Возвращает очередное псевдослучайное равномерно распределенное зн ние   типа   int,   принадлежащее   интервалу   от   Integer.MIN_VALUE   до Integer .MAX_VALUE включительно.

public int nextlnt(int ceiling)

Метод аналогичен предыдущему, но возвращает значение из интервала от 0 до величины ceiling, исключая ceiling. Удобен в качестве альтернативы nextlntO с последующим выполнением оператора вычисления остатка, %, для получения значений, принадлежащих определенному диапазону. Если содержимое параметра ceiling отрицательно, выбрасывается исключение типа illegalArgumentException.

public long nextLong()

Возвращает очередное псевдослучайное равномерно распределенное значение типа long, принадлежащее интервалу от Long.MIN_VALUE до Long .MAX_VALUE включительно.

public void nextBytes(byte[]   buf)

Заполняет массив buf псевдослучайными значениями типа byte.

public float nextFloat()

Возвращает очередное псевдослучайное равномерно распределенное значение типа float, принадлежащее интервалу от O.Of (включительно) до 1.Of (не считая 1.Of).

 

public double nextDouble()

Возвращает очередное псевдослучайное равномерно распределенное значение типа double, принадлежащее интервалу от 0.0 (включительно) до 1.0 (не считая 1.0).

public double nextGaussian()

Возвращает очередное псевдослучайное значение типа double, распределенное по закону Гаусса (имеет широкое хождение и аналогичный по смыслу термин нормальное распределение. — Прим. перев.) со средним значением 0.0 и стандартной девиацией, равной 1.0.

  Реализации всех методов next (кроме nextGaussian) основаны на синхронизированном protected-методе next, который возвращает случайную битовую последовательность с длиной, соответствующей типу int. Метод setSeed также синхронизирован, поэтому объект может вполне безопасно использоваться единовременно несколькими потоками вычислений.

  Контракт класса предусматривает использование определенных алгоритмов получения последовательностей псевдослучайных чисел, но допускает реализацию и других алгоритмов, в большей степени удовлетворяющих условиям конкретной задачи. Базовый алгоритм, основанный на так называемой линейной конгруэнтной последовательности (linear congruential sequence) (за исчерпывающими сведениями о теоретических аспектах построения генераторов случайных чисел обращайтесь к разделу 3.4 книги Д. Кнута Искусство программирования, т.2. Полу численные алгоритмы, 3-е изд.: Пер. с англ. — М.: Издательский дом "Вильяме", 2000. — ISBN 5-8459-0081-6. — Прим. перев.), воплощен в методе next и используется всеми методами группы next, за исключением nextGaussian. Чтобы реализовать иной алгоритм генератора случайных чисел, достаточно переопределить в классе, производном от , метод next.

 

Источник: Арнолд, Кен, Гослинг, Джеймс, Холмс, Дэвид. Язык программирования Java. 3-е изд .. : Пер. с англ. – М. : Издательский дом «Вильяме», 2001. – 624 с. : ил. – Парал. тит. англ.

По теме:

  • Комментарии