4
respuestas

Math.ramdon()

En la siguiente linea:

Math.floor(Math.ramdon() * 10) + 1;

¿Solo me mostrara numeros del 1 al 10 ò tambien el "0"?

¿pero es lo mismo que hagamos lo siguiente?

Math.floor(Math.ramdon() * 11);

4 respuestas

Math.floor(Math.ramdon() * 10) + 1; ¿Solo me mostrara numeros del 1 al 10 ò tambien el "0"?

El + 1 es precisamente para evitar que el valor resultado sea 0. El rango va a ir desde 1 hasta 10 porque el Math.floor tambien hace que el maximo resultado de esa funcion sea 9 y el + 1 lo vuelve 10.

¿pero es lo mismo que hagamos lo siguiente? Math.floor(Math.ramdon() * 11);

Si haces esto, tu rango ira desde el 0 hasta el 10. Eso hace que no se cumplan las reglas de iniciar en 1 y terminar en 10.

Espero haber ayudado.

Saludos

Muchas Gracias

Como la función Math.floor() elimina las decimales de los valores entregados por la función Math.ramdon(), la cual te entrega valores de muchas decimales entre 0 y 1, sin incluir el número 1, al multiplicar estos valores por 11, lo que estarías haciendo es, sí agregar el número 10 al rango de posibles números entregados pero no eliminas el 0, el cual se te pide que no incluyas, ya que si la función Math.ramdom() te entrega el valor 0, al multiplicarse por 11 sigue siendo 0. Dicho valor, según lo solicitado en el ejercicio, no debe estar incluido en el rango de posibles valores.

Ejemplo:

Código **Math.floor(Math.random()*11) **

  1. Si la función Math.random() arrojara el valor 0.9999999999, quedaría lo siguiente:

Math.floor(0.9999999999 x 11) ----> Math.floor(10.9999999989) en este caso el valor nunca va a llegar a 11 ya que para esto sería necesario que la función Math.random() pudiera arrojar el número 1 pero no es posible

Y como la función Math.floor() lo único que hace es quitar las decímales, el resultaro final sería 10

En este caso, el resultado sí cumple con el rango solicitado en el ejercicio [1, 10]

  1. En caso de que la función Math.random() arrojara el valor 0, quedaría lo siguiente: Math.floor(0 x 11) ----> Math.floor(0) como la función Math.floor() lo único que hace es quitar las decímales, el resultaro final sería 0

Este resultado no cumple con el rango solicitado en el ejercicio [1, 10]

En su defecto, se multiplica el número entregado por la función Math.random() por 10, y se eliminan las decimales con la función Math.floor(), al hacer esto, podemos obtener números entre el 0 y 9, sin incluir el 10, para que nuestro rango de posibles valores esté en el solicitado agregamos el +1, el cuál corre este rango a los valores de entre 1 y 10, ya que aunque la función Math.random() te entregue el valor 0, al sumar 1, el número final nunca será 0. Y del otro extremo, como la función nos entrega valores solo debajo del 1, por lo que si esta función arrojará el valor de 0.99999999, al multiplicarse por 10 queda como 9.9999999, al ejecutarse la función Math.floor() se eliminan las decimales quedando solo el 9 pero como a este resultado pedimos que se agregue el + 1, en este caso el valor final sería 10.

Saludos

hola seria casi igual , salvo que te toma en cuenta el 0.