Глиф Учебники

Как получить случайное число

Справочник · Java · 1 минута чтения

Случайное целое число от 1 до 6 (бросок кубика):

Java
import java.util.Random;

public class Main {
    public static void main(String[] args) {
        Random random = new Random();
        int dice = random.nextInt(6) + 1;
        System.out.println(dice);
    }
}

random.nextInt(6) возвращает одно из чисел 0, 1, 2, 3, 4, 5 — от нуля до 6 не включая 6. Если прибавить 1, получится 1…6. При каждом запуске число своё.

Число в диапазоне от min до max

Java
int value = random.nextInt(max - min + 1) + min;

Например, от 10 до 20 включительно: random.nextInt(11) + 10. С Java 17 то же можно записать короче: random.nextInt(10, 21) — первая граница включается, вторая нет.

Создайте один объект Random и берите из него все числа — создавать новый перед каждым числом не нужно.

Через Math.random

Math.random() возвращает дробное число от 0.0 до 1.0 (единица не включается). Импорт не нужен:

Java
int dice = (int) (Math.random() * 6) + 1;

Скобки здесь важны. (int) Math.random() * 6 всегда даёт 0: сначала Math.random() превращается в int — это всегда 0, — и только потом умножается на 6.

Другие случайные значения

Что нужноКак
Дробное от 0.0 до 1.0random.nextDouble()
true или falserandom.nextBoolean()
Большое целоеrandom.nextLong()
Случайный элемент массиваarr[random.nextInt(arr.length)]
Перемешать списокCollections.shuffle(list)

Одна и та же последовательность

Если передать в Random число — зерно (seed), — последовательность «случайных» чисел будет одинаковой при каждом запуске:

Java
Random random = new Random(42);

Это удобно для отладки и тестов: программа ведёт себя предсказуемо. В обычной работе зерно не указывают.

Подводные камни