Math.random()
возвращает значение между 0.0
(включая) и 1.0
(исключая) сказать возвращает 0.05013371..
(, например), чем ваш метод будет делать следующую операцию,
0.05013371.. * 100000 = 5013.371...
(int) 5013.371... = 5013
5013 % 1000 = 13 // Incorrect
Но другой путь вы можете использовать Math.random()
по-другому, чтобы решить это,
int upperBound = 999;
int lowerBound = 100;
int number = lowerBound + (int)(Math.random() * ((upperBound - lowerBound) + 1));
Объяснение,
100 + (int)((Number >= 0.0 and < 1.0) * (999 - 100)) + 1;
100 + (int)((Number >= 0.0 and < 1.0) * (899)) + 1;
MIN Это может вернуться,
100 + (int)(0.0 * (899)) + 1;
100 + 0 + 1
101
MAX Это может вернуться,
100 + (int)(0.9999.. * (899)) + 1;
100 + 898 + 1
999
ПРИМЕЧАНИЕ: Вы можете изменить верхняя и нижняя обязательна для получения требуемых результатов.
Ответ на ваш вопрос здесь: [Генерация случайных целых чисел в диапазоне с Java] (http://stackoverflow.com/questions/363681/generating-random-integers-in-a-range-with-java) – Pokechu22
Что мешает получать номера от 0 до 100? –