2
respostas

Não peguei a parte de evitar repetições

Eu realmente me perdi um pouco no final do curso, em relação a como impedir que haja repetições e como impedir que selecione o número 0. Séria possível alguém me explicar o por que de cada código dessea parte?

 function sorteia() {

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

    }

    function sorteiaNumeros(quantidade) {

        var segredos = [];

        var numero = 1;

        while(numero <= quantidade) {

              var numeroAleatorio = sorteia();
              var achou = false;

              if (numeroAleatorio !== 0) {
                     for(var posicao = 0; posicao < segredos.length; posicao++) {

                           if(segredos[posicao] == numeroAleatorio){
                                achou = true;
                                break;
                           }

                     }

                     if (achou == false) {
                           segredos.push(numeroAleatorio);
                           numero++;
                     }
              }

        }

        return segredos;

    }

    var segredos = sorteiaNumeros(3);
2 respostas

Olá, Ryan! Entendo que essa parte do código possa parecer um pouco complexa no início. Vou explicar cada parte para você.

O código é responsável por gerar um array chamado segredos com uma quantidade específica de números aleatórios únicos (sem repetições) entre 1 e 10.

A função sorteia() gera um número aleatório entre 0 e 10. O Math.random() gera um número aleatório entre 0 (inclusivo) e 1 (exclusivo), e ao multiplicá-lo por 10, obtemos um número entre 0 e 10. O Math.round() arredonda esse número para o inteiro mais próximo.

A função sorteiaNumeros(quantidade) é onde a mágica acontece. Ela recebe um número que determina quantos números aleatórios únicos queremos gerar.

O while loop continua até que tenhamos a quantidade desejada de números únicos. Dentro do loop, geramos um número aleatório com a função sorteia().

O código então verifica se o número gerado é diferente de 0 (if (numeroAleatorio !== 0)). Se for 0, o código simplesmente ignora e gera um novo número na próxima iteração do loop.

Se o número gerado não for 0, o código então verifica se esse número já existe no array segredos. Isso é feito percorrendo todo o array segredos e comparando cada elemento com o número gerado. Se encontrar um número igual, a variável achou é definida como true e o loop for é interrompido.

Depois disso, o código verifica se o número gerado é único (ou seja, achou ainda é false). Se for único, o número é adicionado ao array segredos e a variável numero é incrementada.

O processo é repetido até que tenhamos a quantidade desejada de números únicos no array segredos.

Espero que isso esclareça suas dúvidas sobre essa parte do código. É um ótimo exemplo de como usar loops e condicionais para resolver um problema comum em programação. Espero ter ajudado e bons estudos!

obrigado pela ajuda.