Olá, Eduardo! Parece que você está enfrentando um problema com a sua função de sorteio. Vamos tentar resolver isso juntos.
Primeiramente, percebo que você está usando a função Math.random()
para gerar números aleatórios. Essa função retorna um número entre 0 (inclusivo) e 1 (exclusivo). Quando você multiplica esse número pelo limiteNumero
e adiciona 1, você está gerando um número entre 1 e limiteNumero
(inclusivo). Isso parece correto.
No entanto, o problema parece estar na sua lógica de verificação e adição de números à lista. Você está verificando se o número gerado já está na lista e, se não estiver, adiciona-o à lista. Mas você só faz isso se a quantidade de números na lista já for maior ou igual a quantidadeMin
. Isso pode ser um problema se quantidadeMin
for maior que 0, pois inicialmente a lista está vazia e a condição quantidadeNaLista >= quantidadeMin
nunca será verdadeira.
Além disso, você está usando recursão para continuar o sorteio até que a quantidade de números na lista seja menor que quantidadeMax
. No entanto, você só verifica isso depois de adicionar um número à lista, o que significa que você pode acabar com mais números na lista do que o especificado em quantidadeMax
.
Aqui está uma versão modificada do seu código que deve resolver esses problemas:
function sortear() {
let quantidadeMin = parseInt(document.getElementById('de').value);
let limiteNumero = parseInt(document.getElementById('ate').value);
let quantidadeMax = parseInt(document.getElementById('quantidade').value);
while (listaDeNumeros.length < quantidadeMax) {
let numeros = Math.floor(Math.random() * limiteNumero) + 1;
if (!listaDeNumeros.includes(numeros) && listaDeNumeros.length >= quantidadeMin) {
listaDeNumeros.push(numeros);
}
}
console.log(listaDeNumeros);
}
Nesse código, eu mudei a lógica para usar um loop while
em vez de recursão. O loop continua até que a quantidade de números na lista seja igual a quantidadeMax
. Dentro do loop, um número aleatório é gerado e, se ele não estiver na lista e a quantidade de números na lista for maior ou igual a quantidadeMin
, ele é adicionado à lista.
Espero ter ajudado e bons estudos!