21

Как на языке Java получить случайное число?

delphikettle
  • 1,330
  • 4
  • 24
  • 50
  • и у кого только рука поднялась вопрос заминусовать? По 1000 просмотров в год! Почти по 3 просмотра в день! – Andrew Kachalin Sep 11 '15 at 07:40

2 Answers2

24
import java.util.Random;

// Инициализируем генератор
Random rnd = new Random(System.currentTimeMillis());
// Получаем случайное число в диапазоне от min до max (включительно)
int number = min + rnd.nextInt(max - min + 1);

Функция rnd.nextInt(limit) возвращает число от нуля (включительно) до limit (не включая limit).

kirelagin
  • 4,508
  • 22
  • 29
  • 2
    А зачем abs? Его можно просто убрать и всё будет ок и работать будет даже с отрицательными min и max – cy6erGn0m Jan 28 '11 at 12:11
  • @cy6erGn0m остатки непонятных мыслей :). – kirelagin Jan 28 '11 at 12:14
9

Вариант 1:

Более сложный и более функциональный. Возвращает случайное число от 0 до того что указано в скобках (не включая). Тип возвращаемого числа зависит от использованного метода - nextInt, nextDouble, nextFloat и пр.

Random random = new Random();
int num = random.nextInt(100);

Если нужен какой-то конкретный промежуток чисел, то делаем так.

Random random = new Random();
int num = 36 + random.nextInt(100 - 36);

Вернет случайное целое число от 36 до 99.

Вариант 2:

Простой, но менее функциональный. Возвращает случайное число типа double от 0 до 1.

double num = Math.random();
kulikovman
  • 1,066
  • никак не могу понять как вы получили промежуток от 36 до 99, я не умею пользоваться этой функцией – midnightelf18 Dec 27 '18 at 17:08
  • 1
    @icedev-sk, функция random.nextInt(x) генерирует случайное число от 0 до x-1, вот собственно и все. Если нужно получить от 36, делаем поправку на это, прибавляя 36 к результату и вычитая 36 из возможного максимума. – kulikovman Dec 28 '18 at 20:34