Почему следующие значения составляют от 0 до 9, а не от 10?
Насколько я понимаю, Math.random () создает число от 0 до менее 1,0.
Таким образом, он может выдавать 0,99998, который10 на * 10, не так ли?
int targetNumber = (int) (Math.random()* 10);
Приведение double к int в Java выполняет целочисленное усечение. Это означает, что если ваше случайное число равно 0.99987, то умножение на 10 дает 9.9987, а усечение целых - 9.
double
int
Из математического Javadoc:
"псевдослучайный дубль больше или равно 0,0 и меньше 1,0"
1.0 не является возможным значением с Math.random. Таким образом, вы не можете получить 10. И (int) 9.999 дает 9
Причина (Math.random () * 10 округляется с использованием int () , поэтому int (9.9999999) приводит к 9 .
Поскольку (int) округляется. (int)9.999 приводит к 9. // целочисленное усечение
(int)
(int)9.999
Вы можете добавить 1 к уравнению, так что результат будет от 1 до 10 вместо 0 до 9, например:
int targetNumber = (int) (Math.random()* 10+1);
Вы всегда можете добавить +1 к концу команды, что позволит ей добавить 1 к сгенерированному числу.Итак, у вас будет что-то вроде этого:
int randomnumber = ( (int)(Math.random( )*10) +1);
Это будет генерировать любое целое число от 1 до 10.
Если вы хотите любое целое число от 0 до 10, вы можете сделать это:
int randomnumber = ( (int)(Math.random( )*11) -1);
Надеюсь, это поможет!
Math.floor (Math.random () * 10) + 1
Теперь вы получаете целое число от 1 до 10, включая число 10.
0.99987, который становится 10 на * 10
Не когда я пошел в школу. Становится 9.9987.