1
resposta

[Sugestão] Eu utilizei o Math.randon

Utilizando o Math.round, não necessita do uso do +1.

Correto usar assim ?

function sorteiaNumeros(){
    let quantidade = parseInt(document.getElementById("quantidade").value);
    let numeroInicial = parseInt(document.getElementById("de").value);
    let numeroFinal = parseInt(document.getElementById("ate").value);

    let numeroSorteado = numeroAleatorio(numeroInicial, numeroFinal);
    console.log(numeroSorteado);
}

function numeroAleatorio(min, max){
    return Math.round(Math.random() * (max - min) + min);
  
}
1 resposta

Olá, Adriano! Como vai? Espero que bem!

Primeiramente, parabéns pelo resultado na resolução do desafio, ficou ótimo!

Agora sobre a pergunta, a resposta é: depende do que você quer fazer.

No caso do seu código, usando Math.round, você está arredondando o número aleatório gerado para o inteiro mais próximo. Isso significa que o valor mínimo e máximo que você definiu tem menos chances de serem sorteados, porque Math.round arredonda para baixo se a parte fracionária é 0.5 ou menos, e para cima se é mais do que 0.5.

Por exemplo, se você quiser um número aleatório entre 1 e 3 (inclusive), usando Math.round, você terá:

  • 33% de chance de obter 1 (quando o número aleatório é entre 1 e 1.5)
  • 33% de chance de obter 2 (quando o número aleatório é entre 1.5 e 2.5)
  • 33% de chance de obter 3 (quando o número aleatório é entre 2.5 e 3)

No entanto, se você usar Math.floor, a distribuição será uniforme, e você terá:

  • 33% de chance de obter 1 (quando o número aleatório é entre 1 e 2)
  • 33% de chance de obter 2 (quando o número aleatório é entre 2 e 3)
  • 33% de chance de obter 3 (quando o número aleatório é entre 3 e 4)

Portanto, se você quer uma distribuição uniforme, é melhor usar Math.floor. Se você quiser que os números do meio sejam mais prováveis, você pode usar Math.round.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.