Primeiro apenas um esclarecimento, Math.random() retorna números maiores ou iguais a 0.0 e menores que 1.0, ou seja, 1.0 não está incluído, o maior número retornado seria 0.9.
Aí, seguindo sua lógica nós teríamos:
0.0 * 5 = 0.0 + 1 = 1.0
0.1 * 5 = 0.5 + 1 = 1.5
0.2 * 5 = 1.0 + 1 = 2.0
0.3 * 5 = 1.5 + 1 = 2.5
0.4 * 5 = 2.0 + 1 = 3.0
0.5 * 5 = 2.5 + 1 = 3.5
0.6 * 5 = 3.0 + 1 = 4.0
0.7 * 5 = 3.5 + 1 = 4.5
0.8 * 5 = 4.0 + 1 = 5.0
0.9 * 5 = 4.5 + 1 = 5.5
Com sucesso nós poderemos ter números dentro dos limites que esperávamos. Cada número se repete duas vezes o que quer dizer que a probabilidade de cair num certo número é igual.
No código que mostrou o que seria um problema é se os valores que esperamos fossem outros. Por exemplo, se quizéssemos números entre 5 e 10, os resultados poderiam sair errados já que:
0.0 * 10 + 5 = 5 (que é o mínimo e está OK)
0.9 * 10 + 5 = 14 (que seria o máximo mas está fora do esperado)
Por isso, para outros valores, seria melhor usar algo como isso:
Min + (int)(Math.random() * ((Max - Min) + 1))
Você pode encontrar os detalhes sobre esta implementação nessa resposta do StackOverflow.
Mas ouvi dizer que seria uma melhor prática usar a classe Random ao invés deste método que usamos acima, mas é preciso pesquisar melhor a respeito.