3
respostas

Não entendi o funcionamento desta rotina

<meta charset="UTF-8">
<script>

    function pulaLinha() {

        document.write("<br>");
    }

    function mostra(frase) {

        document.write(frase);
        pulaLinha();
    }

    function sorteia(n) {

        return Math.round(Math.random() * n); // não fico claro este trecho
    }    

    var numeroPensado = sorteia(10); // não fico claro este trecho

    var chute = parseInt(prompt("Já pensei. Qual você acha que é?"));

    if(chute == numeroPensado) {

        mostra("Uau! Você acertou, pois eu pensei no " + numeroPensado);
    } else {

        mostra("Você errou! Eu tinha pensado no " + numeroPensado);
    }
</script>

Não consegui entender a rotina
3 respostas
function sorteia(n) 
{
        return Math.round(Math.random() * n); // não fico claro este     trecho
}
var numeroPensado = sorteia(10); // não fico claro este trecho

Explicando primeiramente as funções Math.random() e Math.round():

A função Math.random() apenas vai retornar um número aleatório entre 0 e 1.

Exemplo (você pode rodar no console do browser (Viva ao Javascript!):

Math.random()
0.18994185829636878

Antes de explicar sobre o Math.round(), como você pode ver no retorno da função, o número gerado é muito pequeno. Por isso a função "sorteia(n)" recebe um número para multiplicar pelo valor gerado no Math.random().

Exemplo de Math.random() * 10:

Math.random() * 10
4.448309995635718 // Agora temos um número maior que zero!

Ai entra a função Math.round(), que está recebendo o retorno do math.random() * n, dentro da função sorteia.

O Math.round(), transforma esse retorno gigantesco em um número inteiro.

Veja, se eu pegar o número 4.448309995635718, que foi gerado na nossa última execução, e colocar na função Math.round(), o retorno é 4!

Math.round(4.448309995635718)
4

Antes do Math.round() seria bem difícil acertar o número, por isso transformamos ele em apenas um inteiro. Compreendeu?

No final, a variável "numeroPensado" apenas recebe um número inteiro que foi gerado pela nossa função sorteia, a partir do número que foi passado por parâmetro.

Agora que você entende como funciona as funções Math.round() e Math.random(), ficou fácil de entender o que tem dentro da variável.

Caso queira saber mais sobre as duas funções, pode consultar no MDN:

Math.random(): https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/Global_Objects/Math/random

Math.round(): https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/Global_Objects/Math/round

Abraço e bons estudos.

Boa Nikolas!!

Oi Cristiano Você ainda tem alguma dúvida em relação a esse tópico ou já foi solucionado? A resposta do Nikolas te ajudou?