Возможный дубликат:. Java: генерация случайного числа в диапазоне
Я хочу получить случайное значение в диапазоне от 1 до 50 на языке Java.
Как это можно сделать с помощью Math.random();
?
Как связать значения, которые возвращает Math.random()
?
Первое решение - использовать класс java.util.Random
:
import java.util.Random;
Random rand = new Random();
// Obtain a number between [0 - 49].
int n = rand.nextInt(50);
// Add 1 to the result to get a number from the required range
// (i.e., [1 - 50]).
n += 1;
Другим решением является использование Math.random()
:
double random = Math.random() * 49 + 1;
или
int random = (int)(Math.random() * 50 + 1);
int max = 50;
int min = 1;
double random = Math.random() * 49 + 1;
or
int random = (int )(Math.random() * 50 + 1);
Это даст значение от 1 до 50 в случае int или от 1,0 (включительно) до 50,0 (включительно) в случае double
Почему?
Метод > random() возвращает случайное число в диапазоне от 0,0 до 0,9..., вы умножаете его на 50, таким образом, верхняя граница становится от 0.0 до 49.999... при добавлении 1 получается от 1.0 до 50.999..., теперь при усечении до int получается от 1 до 50. (спасибо @rup в комментариях). leepoint's потрясающая статья по обоим подходам.
Random rand = new Random();
int value = rand.nextInt(50);
Это даст значение от 0 до 49.
Для значений от 1 до 50: rand.nextInt((max - min) + 1) + min;
.
Источник некоторой крутизны Java Random.