int randomWithRange(int min, int max)
{
int range = (max - min) + 1;
return (int)(Math.random() * range) + min;
}
Вывод randomWithRange(2, 5)
10 раз:
5
2
3
3
2
4
4
4
5
4
Границы включительно, т.е. [2,5], и min
должно быть меньше max
в приведенном выше примере.
РЕДАКТИРОВАТЬ: Если кто-то собирается попробовать и быть глупым и обратить вспять min
и max
, вы можете изменить код на:
int randomWithRange(int min, int max)
{
int range = Math.abs(max - min) + 1;
return (int)(Math.random() * range) + (min <= max ? min : max);
}
EDIT2: На ваш вопрос о double
s это просто:
double randomWithRange(double min, double max)
{
double range = (max - min);
return (Math.random() * range) + min;
}
И снова, если вы хотите защитить его от идиотов, это просто:
double randomWithRange(double min, double max)
{
double range = Math.abs(max - min);
return (Math.random() * range) + (min <= max ? min : max);
}