Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Utilização do Math.random()

Prezados(as),

Antes de iniciar o vídeo eu já havia tentado implementar alguns códigos para resolver os problemas. Acontece que, no decorrer do vídeo, deparei-me com uma diferença na implementação do Math.random.

No vídeo, os professores utilizam:

return Math.floor(Math.random() * (max - min + 1) ) + min;

Eu, no entanto, utilizei-o da seguinte forma:

return parseInt ((Math.random() * max) + min);

Da forma que escrevi tem funcionado, mas fiquei na dúvida se a implementação dela está de fato correta ou, se nas minhas tentativas ainda não foi encontrado algum bug.

Quem puder dar uma devolutiva eu agradeço

1 resposta
solução!

Olá Israel, como vai? Espero que esteja bem!

A função que você implementou:

return parseInt ((Math.random() * max) + min);

está quase correta, mas pode ter um pequeno problema dependendo do intervalo que você deseja.

O método Math.random() gera um número aleatório entre 0 (inclusivo) e 1 (exclusivo). Quando você multiplica esse número por max, o intervalo se torna de 0 a max (exclusivo). Ao adicionar min, você está efetivamente deslocando esse intervalo para ser de min a max + min (exclusivo).

Por exemplo, se min for 10 e max for 20, o intervalo será de 10 a 30, em vez de 10 a 20. Além disso, o parseInt irá arredondar para baixo qualquer número decimal, o que significa que o valor máximo (neste caso, 30) nunca será alcançado.

Por outro lado, a função usada no vídeo:

return Math.floor(Math.random() * (max - min + 1) ) + min;

primeiro calcula a diferença entre max e min (ou seja, o tamanho do intervalo desejado), adiciona 1 para tornar max inclusivo, multiplica o resultado por Math.random() para obter um número aleatório dentro desse intervalo, e então adiciona min para deslocar o intervalo para começar em min. O Math.floor é usado para arredondar para baixo o número, garantindo que ele seja um número inteiro.

Então, para o seu caso, a função usada no vídeo é mais apropriada, pois ela garante que o número gerado esteja exatamente dentro do intervalo desejado.

Espero ter ajudado e bons estudos!