2014-12-07 3 views
1

Итак, я пытаюсь получить код, чтобы получить случайное числовое число, основанное на том, что вводит пользователь. и мой текущий оператор не генерирует правильный диапазон.Получение диапазона от пользовательского ввода для случайного генерации

secretNum = low + (int)(Math.random()* max); 

Где низкая нижняя часть диапазона, а высокая - самая высокая. Например. если низкий был 5 и высокий был 10, это порождает диапазон от 1 до 50? (5 * 10).

ответ

0

Вы должны использовать this-

secretNum = min + (int)(Math.random() * ((max - min) + 1));  

Если низкий был 3, к примеру, и высокая было 7, то случайное число будет либо 3,4,5,6 или 7.

0

Я бы использовал для этого Random object.

создается так:

Random r = new Random(); 

И затем оттуда, она очень проста в использовании. Для случайного междунар от 0 (включительно) до 50 (включительно), просто сделать:

int randomNumber = r.nextInt(50); 

Я думаю, что это делает все это намного проще для вас. Если пользователь вводит 10 и 140, вы делаете что-то вроде этого:

int lowest = 10; 
int highest = 140; 
int randomMax = 140-10; 
int randomNumber = r.nextInt(randomMax) + 10; 

Возможно, это самый простой способ сделать это.

1

Вы сохраните введенные пользователем в переменной in:

String in = sc.nextLine(); 

Затем создается экземпляр java.util.Random с семенем является хэш ввода:

Random r = new Random(in.hashCode()); 

int randomNumber = r.nextInt(); 

Если вы хотите генерировать случайное число между максимумом и минимумом см. this Question Или this one, но тогда вам нужно преобразовать C++ в Java:

C++:

output = min + (rand() % (int)(max - min + 1)) 

Java:

output = min + (r.nextInt() % (max - min + 1)) 
Смежные вопросы