1
resposta

Mão na massa: proteção no total de números sorteados

Olá, como estão ? bom na aula "Mão na massa: proteção no total de números sorteados do curso " , "Lógica de programação: praticando com desafios Lógica de programação: praticando com desafios" Eu fiz esse código aqui:

if(quantidade > numero) { alert(A quantidade de números desejados para o sorteio não pode ser superior à quantidade de números no intervalo ${de} até ${ate} ); return; } dentro do bloco while: while (sorteados.includes(numero)) { numero = obterNumeroAleatorio(de, ate);

Com isso o codigo final foi esse: OBS:funcionou perfeitamente,porém estou com duvida se a longo prazo pode acontecer algum erro no uso? while (sorteados.includes(numero)) { numero = obterNumeroAleatorio(de, ate);

       if(quantidade > numero) { 
          alert(`A quantidade de números desejados para o sorteio não pode ser superior à quantidade de números no intervalo ${de} até ${ate} `);
            return;
        }
    }

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

1 resposta

Olá, Marcelo.

Tudo bem?

Seu código parece estar bem estruturado, mas entendo sua preocupação sobre possíveis erros a longo prazo. Vejamos.

A lógica que você implementou verifica se o número sorteado já foi incluído na lista de números sorteados e, caso seja, gera um novo número aleatório até encontrar um número que ainda não foi sorteado. Isso é uma prática comum em sorteios para evitar duplicação de números.

No entanto, há um ponto importante a considerar: a condição quantidade > numero dentro do while pode não ser a melhor abordagem. Isso porque numero é um número aleatório gerado dentro do intervalo, e não necessariamente a quantidade de números que você quer sortear. Vamos ajustar a lógica para que a verificação seja feita antes de entrar no loop while.

Aqui está uma sugestão de como você pode reestruturar o código:

if (quantidade > (ate - de + 1)) {
    alert(`A quantidade de números desejados para o sorteio não pode ser superior à quantidade de números no intervalo ${de} até ${ate}`);
    return;
}

let sorteados = [];
while (sorteados.length < quantidade) {
    let numero = obterNumeroAleatorio(de, ate);
    if (!sorteados.includes(numero)) {
        sorteados.push(numero);
    }
}

Neste exemplo, a verificação quantidade > (ate - de + 1) é feita antes do loop while, garantindo que a quantidade de números desejados não exceda o intervalo disponível. Dentro do loop, continuamos gerando números aleatórios e adicionando-os à lista de sorteados somente se ainda não estiverem na lista.

Veja se faz sentido. Qualquer coisa pode falar.

Espero ter ajudado e bons estudos!