Olá, pessoal.
Alguém poderia me explicar o funcionamento da função "gerarNumeroAleatorio" e os códigos anexos a ela depois desta aula? Porque sinceramente eu não entendi nada...
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Olá, pessoal.
Alguém poderia me explicar o funcionamento da função "gerarNumeroAleatorio" e os códigos anexos a ela depois desta aula? Porque sinceramente eu não entendi nada...
Olá!
É normal que, ao ver tantos comandos novos como includes, push, length e o conceito de recursão, a cabeça dê um nó no começo.
Vou explicar de um jeito bem simples o que esse código está fazendo, para que você consiga visualizar o processo de sorteio sem repetições.
Imagine que você tem um pote de sorteio (a nossa lista). Cada vez que um número sai, você o anota em um papel e guarda dentro desse pote. O objetivo é garantir que, se um número já saiu, ele não seja usado de novo até que o pote esteja cheio.
No começo do código, definimos let listaDeNumerosSorteados = [];. Esses colchetes vazios indicam que nosso pote começa sem nada.
Dentro da função gerarNumeroAleatorio(), acontecem três passos importantes:
.length). Se o limite for 10 e já tivermos 10 números, limpamos a lista para recomeçar.Math.random() escolhe um número.includes): Aqui perguntamos: "Esse número já está na lista?"..push() para guardá-lo na lista e o enviamos para o jogo.| Comando | O que ele faz? | Exemplo no mundo real |
|---|---|---|
[] | Cria uma lista vazia. | Um pote vazio. |
.includes(valor) | Checa se o valor já está na lista. | Perguntar: "Esse nome já saiu?". |
.push(valor) | Coloca o valor no final da lista. | Colocar o papelzinho usado no pote. |
.length | Diz o tamanho atual da lista. | Contar quantos papéis tem no pote. |
Um ponto de atenção: A recursão:
Como o Guilherme mencionou, a função chamar a si mesma (return gerarNumeroAleatorio()) é muito útil aqui porque temos poucos números (apenas 10). Se tivéssemos milhões de números e quase todos já sorteados, o computador poderia ficar "cansado" de tentar achar o único que falta, causando um erro. Mas para o nosso jogo, funciona perfeitamente!
Perfeito, Lorena! Entendi perfeitamente. Na verdade eu nem entendi porque eu não entendi ontem, haha!
Muito obrigado!