Існує кілька способів генерувати випадкові значення в Java.
Random
Клас java.util.Random надає кілька методів для генерування псевдовипадкових значень.
Random random = new Random();
random.next(8); // Generates a random int with the given number of bits, in this case 8
random.nextInt(); // Generates a random int in the range Integer.MIN_VALUE through Integer.MAX_VALUE
random.nextInt(10); // Generates a random int in the range 0 to 10
random.nextFloat(); // Generates a random float in the range 0.0 to 1.0
random.nextDouble(); // Generates a random double in the range 0.0 to 1.0
random.nextBoolean(); // Generates a random boolean value
random.nextLong(); // Generates a random long value
Окрім конструктора за замовчуванням, клас Random має ще один конструктор, у якому можна вказати власне зерно.
Якщо створити два екземпляри Random з однаковим зерном і для кожного з них зробити ту саму послідовність викликів методів, вони будуть генерувати і повертати однакові послідовності чисел.
Math.random()
За допомогою методу Math.random() можна згенерувати випадковий Double у діапазоні від 0.0 до 1.0.
ThreadLocalRandom
Клас java.util.concurrent.ThreadLocalRandom є потокобезпечною альтернативою java.util.Random.
У цього класу є кілька додаткових допоміжних методів для генерування значень, які приймають і нижню, і верхню межу, що робить роботу з ним трохи простішою.
ThreadLocalRandom random = ThreadLocalRandom.current();
random.nextInt(10, 20); // Generates a random int in the range 10 to 20
random.nextLong(10, 20); // Generates a random long in the range 10 to 20
random.nextFloat(10.0, 20.0); // Generates a random float in the range 10 to 20
random.nextDouble(10.0, 20.0); // Generates a random double in the range 10 to 20
Випадкові значення часто застосовують для генерування чутливих значень, як-от паролів. Однак усі описані вище методи генерування випадкових значень не вважаються криптографічно стійкими.
Щоб генерувати криптографічно стійкі випадкові числа, скористаймося класом java.security.SecureRandom.