1
respuesta

[Duda] Doble FOR

Cuando se usa un doble for, por su estructura, el codigo hacia que los duplicados se eliminaran pero siguiera la cuenta, entonces habia veces en el que se generan 3 numeros aleatorios en vez de 4.

Leyendo varios post, una solucion fue ponerle un contador-- cuando encontrara un duplicado y asi se reiniciaba la cuenta.

function numerosSorteados(CantidadNumeros){

        var numerosSorteados= [];

        for(conteo=1; conteo<=CantidadNumeros;conteo++){

            var numeroAleatorio = Math.round(Math.random()*10);
            var encontrado = false


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

                if(numeroAleatorio == numerosSorteados[posicion]){
                    var encontrado = true;
                    conteo--
                    break;

Yo lo resolvi modificando la estructura del primer for, quitandole el ++, y al parecer funciono bien.

Mi duda es si esto esta bien o es mas recomendable usar el -- como solucion???

function numerosSorteados(CantidadNumeros){

        var numerosSorteados= [];

        for(conteo=1; conteo<=CantidadNumeros;){

            var numeroAleatorio = Math.round(Math.random()*10);
            var encontrado = false

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

                if(numeroAleatorio == numerosSorteados[posicion]){
                    var encontrado = true;
                    break;
                }
            }
            if (encontrado == false){
                numerosSorteados.push(numeroAleatorio)
                conteo++
            }
1 respuesta

Hola Luis, te sugiero que en vez de anidar bucles, modularices el código, es decir, resuelve un bucle en una funcion y luego esa funcion la colocas dentro del bucle, mejorará mucho tu código. Un saludo!