Диапазон чисел в java


Содержание

Описание

Метод Math.random() — в Java используется для генерации случайного числа в диапазоне от 0.0 до 1.0. Различные диапазоны могут быть достигнуты с помощью арифметики.

Синтаксис

Параметры

Подробная информация о параметрах:

  • Метод по умолчанию не принимает параметр.

Содержание

Примитивные типы [ править ]

В Java есть 8 примитивных типов, которые делят на 4 группы, вот они:

  1. Целые числа — byte, short, int, long
  2. Числа с плавающей точкой (иначе вещественные) — float, double
  3. Логический — boolean
  4. Символьный — char

Целочисленные типы [ править ]

Целочисленные типы различаются между собой только диапазонами возможных значений, например, для хранения номера элемента в таблице Менделеева пока хватит переменной типа byte.

ТипРазмер (бит)Диапазонbyte8 битот -128 до 127short16 битот -32768 до 32767char16 битбеззнаковое целое число, представляющее собой символ UTF-16 (буквы и цифры)int32 битот -2147483648 до 2147483647long64 битот -9223372036854775808L до 9223372036854775807L

Пример использования целочисленных типов:

Символы тоже относят к целочисленным типам из-за особенностей представления в памяти и традиций.

Типы с плавающей точкой [ править ]

ТипРазмер (бит)Диапазонfloat32от 1.4e-45f до 3.4e+38fdouble64от 4.9e-324 до 1.7e+308

Логический тип [ править ]

ТипРазмер (бит)Значениеboolean8 (в массивах), 32 (не в массивах используется int)true (истина) или false (ложь)

Ссылочные [ править ]

Ссылочные типы — это все остальные типы: классы, перечисления и интерфейсы, например, объявленные в стандартной библиотеке Java, а также массивы.

Строки [ править ]

Строки это объекты класса String, они очень распространены, поэтому в некоторых случаях обрабатываются отлично от всех остальных объектов. Строковые литералы записываются в двойных кавычках.

Читайте также:  Как настроить интернет летай на андроиде

Эта программа выведет:
Hello World
foo == bar ? true
foo равен bar ? true
foo == baz ? false
foo равен baz ? true

Обертки [ править ]

Если требуется создать ссылку на один из примитивных типов данных, необходимо использовать соответствующий класс-обертку. Также в таких классах есть некоторые полезные методы и константы, например минимальное значение типа int можно узнать использовав константу Integer.MIN_VALUE. Оборачивание примитива в объект называется упаковкой (boxing), а обратный процесс распаковкой (unboxing).

ТипКласс-оберткаbyteByte shortShort intInteger longLong charCharacter floatFloat doubleDouble booleanBoolean

Рекомендуется использовать valueOf, он может быть быстрее и использовать меньше памяти потому что применяет кэширование, а конструктор всегда создает новый объект.

Получить примитив из объекта-обертки можно методом Value.

Класс Math библиотеки Java имеет метод random(), который генерирует случайное значение в диапазоне [0,1). Обратите внимание, что данный диапазон не включает 1 и при описании закрывается круглой скобкой. Можно ли предсказать сгенерированное значение? Теоретически возможно, но практически – это очень труднореализуемая задача. А поскольку существует небольшая вероятность предсказывания случайно-сгенерируемого значения, то такие числа принято называть не случайными, а псевдослучайными.

Чтобы получить псевдо-случайное число в определенном диапазоне необходимо значение метода random() умножить на величину диапазона значений. Например, необходимо генерировать значение в диапазоне от min до max. В этом случае можно использовать следующий код :

Допустим, что необходимо получить значение в диапазоне [1,10), где min=1, max=10 (10 исключительно)

Алгоритм работает следующим образом : диапазон [0;1) умножается на 9=(10-1), соответственно получаем :

  • нижняя граница: 0*9 = 0;
  • верхняя граница: 1*9 = 9,

получаем диапазон [0,9), к которому добавляем min=1. В результате имеем :

  • нижняя граница: 0 + 1 = 1;
  • верхняя граница: 9 + 1 = 10.

Читайте также:  Как включить ножницы в виндовс 10

После подстановки значений в выражение, получим :

Диапазон [-10, 10)

Чтобы получить псевдослучайное число в диапазоне от -10 до 10 (исключительно), необходимо значение Math.random() умножить на 20 и вычесть 10, как это представлено в следующем примере :

Генерирование целочисленных псевдослучайных значений

Для генерирования целочисленных псевдослучайных значений используется представленное выше выражение, в котором произведение «приводится» к целочисленному значению. Например, попробуем получить псевдослучайное значение в диапазоне [5,20]. Обратите внимание, что закрывающаяся скобка квадратная, т.е. 20 входит в диапазон. В этом случае к разности между максимальным и минимальным значениями следует добавить 1, т.е. определить диапазон целочисленных значений [5,21), где 21 не попадает в желаемый диапазон :

Класс Random

В качестве генератора псевдослучайных чисел можно также использовать класс java.util.Random, имеющий два конструктора :

Поскольку Random создаёт псевдослучайное число, то определив начальное число, устанавливается начальная точка случайной последовательности, способствующая получению одинаковых случайных последовательностей. Чтобы избежать такого совпадения, обычно применяют второй конструктор с использованием в качестве инициирующего значения текущего времени. В таблице представлены наиболее часто используемые методы генератора Random :

МетодОписаниеboolean nextBoolean()получение следующего случайного значения типа booleandouble nextDouble()получение следующего случайного значения типа doublefloat nextFloat()получение следующего случайного значения типа floatint nextInt()получение следующего случайного значения типа intint nextInt(int n)получение следующего случайного значения типа int в диапазоне от 0 до nlong nextLong()получение следующего случайного значения типа longvoid nextBytes(byte[] buf)формирование массива из случайно генерируемых значений

Пример получения псевдослучайного целочисленного значения с использованием класса Random :

С классом Random алгоритм получения псевдослучайного числа такой же, как и у метода random класса Math. Допустим, что нам необходимо получить случайное число в диапазоне [5,100], 100 включительно. В этом случае код может выглядеть следующим образом :

Читайте также:  Как отключить автовизуализацию на телевизоре самсунг

Класс SecureRandom

Для криптографии следует применять класс SecureRandom, использующий криптографически сильный генератор случайных чисел (random number generator RNG).

В следующем примере формируется массив псевдослучайных значений типа byte :

Этот же массив можно сформировать методом generateSeed :

Пример использования SecureRandom представлен на странице Симметричного шифрования.

No related posts.

9726552