Получение случайных чисел в Java

Возможный дубликат:
Java: генерация случайного числа в диапазоне

Я хотел бы получить случайное значение от 1 до 50 в Java.

Как я могу сделать это с помощью Math.random(); ?

Как связать значения, которые возвращает Math.random()?

Ответ 1

Первое решение - использовать класс 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);

Ответ 2

int max = 50;
int min = 1;

1. Использование Math.random()

double random = Math.random() * 49 + 1;
or
int random = (int )(Math.random() * 50 + 1);

Это даст вам значение от 1 до 50 в случае int или от 1.0 (включительно) до 50.0 (исключая) в случае двойного

Зачем?

Метод random() возвращает случайное число от 0,0 до 0,9..., вы умножаете его на 50, поэтому верхний предел становится от 0,0 до 49,999... при добавлении 1 он становится от 1,0 до 50,999..., теперь при усечении к int, вы получаете от 1 до 50. (благодаря @rup в комментариях). Удивительная рецензия leepoint на оба подхода.

2. Использование класса Random в Java.

Random rand = new Random(); 
int value = rand.nextInt(50); 

Это даст значение от 0 до 49.

rand.nextInt((max - min) + 1) + min; 1 до 50: rand.nextInt((max - min) + 1) + min;

Источник некоторой Java случайной удивительности.