Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
3
respuestas

Desafio: Loteria. Estableciendo el limite con n

Hola a todos les dejo mi solución del desafío!

<meta charset="UTF-8">

<h1>Juego de Adinación</h1>


<script>
     function saltarLinea(){
          document.write("<br>");
          document.write("<br>");
          document.write("<br>");
     }

     function imprimir(texto) {
          document.write(texto);
     }


     function sortearNumero(numero) {
               return (Math.round(Math.random()*numero));
     }

     var  n = parseInt(prompt("Establezca el limite definiendo 'n' "));

     var numeroLanzado = parseInt(prompt("Elija un numero entre 0 y " + n));

     var numeroPensado = sortearNumero(n);

     if(numeroLanzado > numeroPensado) {
               imprimir ("El numero lanzado es mayor al numero sorteado");

     } else if(numeroLanzado == numeroPensado) {
                       imprimir("Acertaste el numero pensado");
         } else {
               imprimir("El numero lanzado es menor al numero sorteado");
        }

     saltarLinea();

     imprimir("Numero sorteado: " + numeroPensado);


</script>
3 respuestas

Que bien Laureano, se nota que dominas la materia, sigue adelante. Felicidades. Entendí la parte que habíamos hecho con los videos de Christian, ya luego en el desafío , en la función del sorteo, por ahora me costó, aunque analicé lo del instructor y entendí, aunque me quedó la siguiente duda, de por qué el instructor coloca 10 , en la variable de númeroPensado = sorteo(10); ¿por qué 10 y no cualquier otro número?

function sorteo (n){

    return Math.round(Math.random()*n);

}

var númeroPensado = sorteo(10);
var númeroLanzado = parseInt(prompt('Ingrese un número entre el 0-10'));

El instructor coloca 10 a mi parecer para hacer el mismo programa que vimos en la clase, pero utilizando "function" en vez de hacerlo directamente y en ese ejercicio era de 0-10, excelente la forma en que lo pensaste Laureano fuiste un paso mas allá, definiendo la variable "n" como limite...

Pasamos como parametro el 10 para que se reemplace en Math.random() * 10.

Al utilizar Math.random() por lo que entendi** da como resultado un numero flotante entre 0 y 1** -> ejemplo 0.12487456846 |||| 0.7455687589 ||| 0.5485548 ||| Por lo tanto, al multiplicar por 10 es como mover la coma un solo lugar por ejemplo 0.12487456846 * 10 = 1.2487456846

Luego al redondear con Math.Round el numero 1.2487456846 da como resultado 1.

Si queres que de entre 0 y 100, deberias multiplicarlo con 100 (esta vez moves la coma dos lugares)

0.12487456846 * 100 = 12.487456846 que al redondearlo da 12

si fuese un numero como 0.9665474 y lo multiplico por 100

0.9665474 * 100 = 96.65474

Luego lo redondeo con Math.round() y da como resultado 97

Al poner cualquier otro numero el rango de valores es diferente. Si ponemos que n sea 2

Ponele que el random nos da 0.2222, luego lo multiplico por 2 y da 0.4444. Al redondear me va a dar 0. Porque Math.round() siempre redondea dando como resultado un numero entero

  • Suponiendo que n = 2;

  • 0.001 * 2 = 0.002 -> Math.round (0.002)->0

  • 0.4 * 2 = 0.8 -> Math.round(0.8) -> 1

  • 0.5*2 = 1.0 -> Math.round(1.0) -> 1

  • 0.8 *2 = 1.6 -> Math.round(1.6) -> 2

  • 0.999999 * 2 = 1.999998 -> Math.round(1.999998) -> 2

Espero que te haya servido! Un saludo