de inicio con la tabla de valores
x | y
=======
0 | 15
1 | 45
2 | 75
3 | 105
4 | 135
5 | 165
6 | 195
7 | 225
Establecer la ecuación
y = ax + b
Plug en algunos valores iniciales
15 = a(0) + b
Resuelve para cualquier variable que pueda
15 = b
tapón en diferentes valores iniciales
225 = a(7) + 15
resolver para las variables restantes
210 = a(7)
30 = a
Repita la ecuación
y = 30x + 15
Randomize x
entre los límites
x = Math.floor(Math.random() * 8) //0-7
Uso en función
function customRandomNumber() {
var x;
x = Math.floor(Math.random() * 8);
return 30 * x + 15;
}
Obtención de un número aleatorio dentro de un intervalo con un paso se puede generalizar en la siguiente función:
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;
}
que pondría su funct ión como
rand(15, 225, 30);
También debo señalar, porque me había olvidado de los posibles problemas de límites, la forma generalizada se no incluir el límite superior de 225. Esto se debe a Math.random()
devuelve un número mayor que, o igual a cero y menos de uno (0 <= Math.random < 1
).Si desea para incluir el límite superior, sólo hay que incluir un paso más en el intervalo:
rand(15, 255, 30) //will return 15...225
'Math.floor (Math.random() * 11)' devolverá un número '[0-10]', mientras que 'Math.floor (Math.random() * 10) + 1' se devuelve un número '[1-10]'. – zzzzBov