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

Dúvidas em outros testes com o parâmetro "n"

Oi, gente!

Como vão?

Durante a resolução do exercício "Jogo da adivinhação", surgiu uma dúvida: Visto que eu já entendi a função do código

return Math.round(Math.random() * 10);

que é gerar um número aleatório, retirar suas casas decimais(arrendondar) e multiplicar esse resultado por 10, eu tive complicações para entender os códigos

function sorteia(n)
var numeroPensado = sorteia(10);

Pois, no caso destes, eu entendi que a função recebe o valor "10" e o utiliza como parâmetro para realizar o sorteio(ele faz com que só caiam números de 0 a 10). E, neste cenário, o código funciona super bem e, realmente, só são mostrados valores de 0 a 10. Sendo assim, eu imaginei que, quando eu alterasse "var numeroPensado = sorteia(10)" para "var numeroPensado = sorteia(20)" e "return Math.round(Math.random() * 10);" para "return Math.round(Math.random() * 100);", eu receberia valores de 0 a 20, já que, multiplicando os valores só por 10, o maior retorno que eu teria seria o número 10 e, mesmo assim, em raros casos. Porém, quando eu multiplico por 100(vai me dar valores com duas ou três casas decimais) e mudo a variável para "var numeroPensado = sorteia(20)", sendo o "20" para o programa só me mostrar valores de 0 a 20, mesmo assim, ele me mostra valores muito acima de 20. Isto posto, essa é minha dúvida: Se a função serve para limitar as possibilidades de valores(de 0 a 10), por que, quando eu mudo os valores, para ele limitar o resultado entre 0 e 20, ele me mostra valores acima de 20?

Desde já, eu agradeço!

1 resposta
solução!

Olá Thailan, tudo bem?

Na verdade o conteúdo da função sorteia() deve ser:

  function sorteia(n) {

        return Math.round(Math.random() * n);
    } 

Assim, quando você faz a chamada var numeroPensado = sorteia(10); ou var numeroPensado = sorteia(20); ela vai gerar os números dentro dos limites corretos.

Não faz sentido você ter um var numeroPensado = sorteia(20)e um return Math.round(Math.random() * 100). Ou os dois recebem 20 ou os dois recebem 100.