Olá, Paulo! Entendo sua dúvida e acho muito legal que você esteja explorando alternativas de código!
O código que você tentou return parseInt(Math.random() * (max - min) + min)
e o código mostrado na aula return Math.floor(Math.random() * (max - min + 1)) + min
são parecidos, mas têm diferenças sutis que podem afetar o resultado.
parseInt()
: Esta função converte o valor que recebe em um número inteiro. Se o valor for um número flutuante, ele simplesmente descarta a parte decimal. Por exemplo, parseInt(1.9)
retornará 1
.
Math.floor()
: Esta função arredonda o número para baixo até o número inteiro mais próximo. Por exemplo, Math.floor(1.9)
também retornará 1
.
Então, à primeira vista, pode parecer que parseInt()
e Math.floor()
fazem a mesma coisa. No entanto, a diferença crucial aqui é como eles lidam com números negativos. Por exemplo, parseInt(-1.9)
retornará -1
, enquanto Math.floor(-1.9)
retornará -2
. Isso ocorre porque Math.floor()
sempre arredonda para baixo, enquanto parseInt()
simplesmente descarta a parte decimal.
No entanto, no contexto do seu código, essa diferença provavelmente não será perceptível, pois você está lidando com números aleatórios que são sempre positivos.
Outra diferença é o +1
em (max - min + 1)
. Isso garante que o valor max
seja incluído como um possível resultado. Sem o +1
, o valor max
nunca seria retornado pela função.
Espero ter ajudado e bons estudos!