Me encontré con el siguiente comando:
Math.floor(Math.random() * 10 + 1); Entiendo que Math.floor() se convertirá al número entero más bajo, pero ¿qué hace Math.random() * 10 + 1 ?
Math.random devuelve un número de punto flotante x tal que:
Multiplicar 10 por x produce un número de punto flotante en el rango:
Y luego agregar 1 a 10x produce un número de coma flotante en el rango:
Y finalmente Flooring 10x + 1 produce un número entero en el rango:
Por lo tanto, Math.floor(Math.random() * 10 + 1) produce un número entero que se encuentra en el rango [1, 10] .
Math.random genera un número aleatorio entre 0 y 1. Entonces, por ejemplo, puede ser .124 o .42242. Cuando multiplicas este número aleatorio por algo, básicamente lo estás haciendo para que el nuevo resultado no sea menor que 0, pero no mayor que el número por el que lo estás multiplicando.
Entonces, en su ejemplo, lo está multiplicando por 10, lo que significa que obtendrá un número aleatorio entre 0 y 10 con decimales; técnicamente este rango es 'más de 0, pero menos de 10'. El +1 solo aumenta el rango total para que esté entre 1 y 11, o 'más de 1, pero menos de 11'.
Cuando aplica Math.floor() a esto, está redondeando todos estos resultados hacia abajo. Entonces, en el caso sin el '+1', su rango finito es en realidad 0-9, y con el +1 es 1-10