Вообще говоря, чтобы получить случайное число в диапазоне, вы не получаете число от 0
до 100
, вы получаете число от 0
до 1
. Однако это несущественно, так как вы можете просто получить число 0
- 1
, разделив ваш # на 100
- так что я не буду отрабатывать точку.
Когда вы думаете об этом псевдокоде, вам нужно думать о числе между 0
и 1
, которое вы получаете как процент . Другими словами, если у меня есть произвольный диапазон между a
и b
, то, какой процент пути между двумя конечными точками является точкой, которую я выбрал случайным образом. (Таким образом, случайный результат 0.52
означает 52%
расстояния между a
и b
)
Имея это в виду, рассмотрим проблему следующим образом:
Установите начальную и конечную точки вашего диапазона.
var min = 0.9;
var max = 1.1;
Получить случайное число от 0
до 1
var random = Math.random();
Возьмите разницу между начальной и конечной точками диапазона (b
- a
)
var range = max - min;
Умножьте ваше случайное число на разницу
var adjustment = range * random;
Добавьте обратно минимальное значение.
var result = min + adjustment;
И, таким образом, вы можете понять значения каждого шага в последовательности:
var min = 0.9;
var max = 1.1;
var random = Math.random(); // random == 0.52796 (for example)
var range = max - min; // range == 0.2
var adjustment = range * random; // adjustment == 0.105592
var result = min + adjustment; // result == 1.005592
Обратите внимание, что результат гарантированно будет в пределах вашего диапазона. Минимальное случайное значение равно 0
, а максимальное случайное значение равно 1
. В этих двух случаях происходит следующее:
var min = 0.9;
var max = 1.1;
var random = Math.random(); // random == 0.0 (minimum)
var range = max - min; // range == 0.2
var adjustment = range * random; // adjustment == 0.0
var result = min + adjustment; // result == 0.9 (the range minimum)
var min = 0.9;
var max = 1.1;
var random = Math.random(); // random == 1.0 (maximum)
var range = max - min; // range == 0.2
var adjustment = range * random; // adjustment == 0.2
var result = min + adjustment; // result == 1.1 (the range maximum)