Главная » Java » Класс Random

0

Объекты класса Random предназначены для работы с независимыми последовательностями псевдослучайных  чисел. Если вам нужна последовательность  типа double и вас не интересует порядок следования чисел, можно воспользоваться  методом java.lang.Math.random — он создает объект Random при первом вызове и в дальнейшем возвращает псевдослучайные  числа из этого объекта. Чтобы иметь больше средств для контроля за последовательностью (например, чтобы иметь возможность задать стартовое значение), создайте объект Random и получайте числа от него.

public Random()

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

public Random(long seed)

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

public synchronized void setSeed(long seed)

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

public int nextInt()

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

public long nextLong()

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

public float nextFloat()

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

public double nextDouble()

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

public synchronized double nextGaussian()

Возвращает псевдослучайное значение типа double, подчиняющееся распределению

Гаусса, с математическим  ожиданием 0,0 и стандартным отклонением 1,0.

Упражнение 12.7

Для известного количества шестигранных кубиков можно вычислить теоретическую вероятность выпадения каждой из возможных сумм. Например, для двух шестигранных кубиков вероятность выпадения семи очков составляет 1/6. Напишите программу, которая сравнивает теоретическое распределение очков для известного числа кубиков с экспериментальными данными, полученными в результате многочисленных  “бросков”, использующих Random для генерации чисел между 1 и 6. Имеет ли значение выбор метода, генерирующего числа?

Упражнение 12.8

Напишите программу, которая тестирует метод nextGaussian, отображая распределение для большого количества чисел в виде графика — его роль может играть гистограмма из символов *.

Источник: Арнольд К., Гослинг Д. – Язык программирования Java (1997)

По теме:

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