Fiquei um pouco decepcionado nessa parte do curso, porque é falado pelo instrutor que você pode trocar o menorValor, mas nas linhas do código nunca é trabalhado isso, apenas o maiorValor faz parte da função principal. Inclusive num dos testes usando console.log é exibido um valor fora do intervalo desejado, e isso pode ser visto claramente no vídeo.
Os colegas no outro tópico fizeram ótimas sugestões de código, mas não funciona em 100% dos casos, porque o Math.random() pode dar um valor exatamente igual a 0. Isso faria as funções deles retornarem maiorValor+1. (Math.random()>=0 e Math.random()<1)
Então, eu fui pela abordagem contrária:
function gerarNumeroAleatorio() {
return parseInt(Math.random() * ( (maiorValor+1) - menorValor ) + menorValor)
}
Escolhi como teste os valores 20 e 50.
Se Math.random() for 0, sobra apenas menorValor, que é 20. Se Math.random() for 0.01 teríamos 0.31+20 = 20.31, que eliminando os decimais fica 20 novamente. Se Math.random() for 0.9999 teríamos 30.9969 + 20 = 50.9969, convertido para 50.
Apenas se fosse possível Math.random() dar 1, aí teríamos 31+20 = 51.Por esse motivo que se somou 1 ao maiorValor, senão o resultado máximo da conta seria uma aproximação infinita ao 50 (49,99999999...) e nós queremos que o maiorValor seja incluído no sorteio, e não excluído. Pra isso, excluímos o 51.
Espero ter contribuído. :D