A função Math.random() gera um número pseudoaleatório entre 0 (inclusivo) e 1 (exclusivo), ou seja, valores ≥0 e <1.
Por ser pseudoaleatório, o número não é totalmente aleatório, mas gerado com base em cálculos internos do computador.
Para gerar números em um intervalo maior, multiplicamos o resultado por esse valor. Exemplo:
Math.random() * 10 // gera números entre 0 e quase 10
Como Math.random() gera números decimais, usamos parseInt() para pegar só a parte inteira:
parseInt(Math.random() * 10) // gera inteiros entre 0 e 9
Para gerar um número entre 1 e 10, somamos 1 ao resultado:
parseInt(Math.random() * 10 + 1) // gera inteiros entre 1 e 10
A documentação oficial da Mozilla (MDN) é uma ótima fonte para entender melhor essas funções.
Saber pesquisar e testar no console do navegador é essencial para aprender a usar funções como Math.random().