Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

[Duda] SOLUCION ALTERNATIVA DEL EJERCICIO "JUEGO SECRETO"

Que tal todos! Estuve buscando una solucion alternativa al ejercicio "Juego Secreto" donde se solucione el problema relacionado con la aparicion del numero cero en las muestras aleatorias. Mi idea es, en vez de resolver esa cuestion dentro del "While" de la funcion "sortearNumeros" hacerlo en la función "aleatorio", y mi solucion quedo asi:

<script>

    function aleatorio(){

        nroAleatorio = Math.round(Math.random()*10);

        if(nroAleatorio != 0){

        return nroAleatorio;
    }
}

    function sortearNumeros(cantidad) {
        var secreto = [];
        var contador = 1;
        while(contador <= cantidad){

            var numeroAleatorio = aleatorio();
            console.log(secreto);
            var encontrado = false;


            for(var posicion = 0; posicion < secreto.length; posicion++){
                if(numeroAleatorio ==secreto[posicion]){
                    var encontrado = true;
                    break;

            }
        }
        if (encontrado == false){
            secreto.push(numeroAleatorio);
            contador++;
        }


    }

        return secreto
    }

    var secreto = sortearNumeros(4);

    console.log(secreto);

    var input = document.querySelector("input");

    input.focus();

    function verificar() {

    var encontrado = false;

    for(var posicion = 0; posicion < secreto.length; posicion++){

        if(parseInt(input.value) == secreto[posicion]) {

            alert("usted acerto");
            encontrado = true;
            break;

    }


}
    if(encontrado == false){

        alert("usted erró");
    }


    input.value = "";
    input.focus();


    }

    var button = document.querySelector("button");
    button.onclick = verificar;



</script>

Pero cuando reviso en la herramienta de desarrollador los datos pasados por "console.log" en la linea 25, advierto que al refrescar varias veces el navegador para que seleccione distintas muestas de 4 numeros, si bien en ninguna aparece el 0, hay ocasiones en que aparaece un "undefined" - el resultado del array es:

[
    10,
    2,
    null,
    1
]

Les consulto ¿cual es la naturaleza del error?. Y, por otro lado, suponiendo que ese error pueda solucionarse en la version que les compartí ¿es una forma válida de solucionar el problema de la aparicion del 0?¿la consideran eficiente?. Agradeceré cualquier opinion. Saludos!

1 respuesta

Hola Alumno, espero que estés bien.

Para generar un número por ejemplo de 1 a 10 puedes hacerlo así:

function aleatorio(){

        nroAleatorio = Math.floor(Math.random()*10 + 1);       
        return nroAleatorio;
}

El error es porque cuando aleatorio() genera un 0, nada es retornado, entonces cuando vas a atribuir el número generado por aleatorio entonces queda como undefined.

¡Saludos!

Si este post te ayudó, por favor, marca como solucionado ✓. Continúa con tus estudios