Начнем с таблицы значений
x | y
=======
0 | 15
1 | 45
2 | 75
3 | 105
4 | 135
5 | 165
6 | 195
7 | 225
Настройка уравнения
y = ax + b
Подключите некоторые начальные значения
15 = a(0) + b
Решите для любых переменных вы можете
15 = b
Подключить разные начальные значения
225 = a(7) + 15
Решите для любых оставшихся переменных
210 = a(7)
30 = a
Переформулируйте уравнение
y = 30x + 15
Рандомизировать x
между пределами
x = Math.floor(Math.random() * 8) //0-7
Использование в функции
function customRandomNumber() {
var x;
x = Math.floor(Math.random() * 8);
return 30 * x + 15;
}
Получение случайного числа в интервале с шагом может быть обобщено с помощью следующей функции:
function rand(min, max, step) {
var delta,
range,
rand;
if (arguments.length < 2) {
max = min;
min = 0;
}
if (!step) {
step = 1;
}
delta = max - min;
range = delta / step;
rand = Math.random();
rand *= range;
rand = Math.floor(rand);
rand *= step;
rand += min;
return rand;
}
Что бы поставить вашу функцию как
rand(15, 225, 30);
Следует также отметить, что, поскольку я забыл о возможных проблемах с границами, обобщенная форма будет , а не включать верхнюю границу 225. Это потому, что Math.random()
возвращает число, большее или равно нулю и меньше один (0 <= Math.random < 1
). Если вы хотите, чтобы включили верхнюю границу, вам просто нужно включить еще один шаг в интервал:
rand(15, 255, 30) //will return 15...225