1
resposta

retorno não esperado jogo do adivinha

<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);
    }    

    var numeroPensado = sorteia(10);


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

    if(chute == numeroPensado) {

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

        if(chute > numeroPensado) {

            mostra("Você errou! Seu chute é maior que o número pensado!");

        } else {

            mostra("Você errou! Seu chute é menor que o número pensado!");
        }

    }
</script>

esse código acima é a resposta do instrutor concordo com ela e tive , na minha ,a mesma linha de raciocínio. Mas ao testar o programa ele não calcula os números de 0 a 'n' como o solicitado pelo desafio(pelo visto sempre sorteia de 0 a 100, independente do que colocamos como parâmetro para a execução da função mostra) .Não consigo identificar o porque isso ocorre, se alguém puder analisar, agradeço.

1 resposta

Oi, Gustavo! Tudo bem?

Desculpa a demora por um retorno

Ao analisarmos o código: Math.round(Math.random() * n);

Sabendo que Math.round arredonda um número real para um inteiro e que Math.random gera um número aleatório entre 0 e 1, o que está acontecendo nesse trecho de código é: um número aleatório entre 0 e 1 é gerado, multiplicado por 10 (valor atribuído a n) e arredondado para um valor inteiro. Ou seja, por meio nesse código a função gera um valor aleatório entre 0 e 10.

Dessa forma, o valor que você atribui a n apenas gera um número que será multiplicado pelo número aleatório gerado.

Para que você calcule um número aleatório inteiro entre dois valores sugiro a troca da função sorteia por:

function getRandomArbitrary(min, max) {
  return Math.random() * (max - min) + min;
}

Alterando o seu código da seguinte forma:

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

    function pulaLinha() {

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

    function mostra(frase) {

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



    function getRandomArbitrary(min, max) {
         return Math.round(Math.random() * (max - min) + min);
}



    var numeroPensado = getRandomArbitrary(0,5);

    alert(numeroPensado);


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

    if(chute == numeroPensado) {

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

        if(chute > numeroPensado) {

            mostra("Você errou! Seu chute é maior que o número pensado!");

        } else {

            mostra("Você errou! Seu chute é menor que o número pensado!");
        }

    }
</script>

Caso tenha ficado alguma dúvida, fique a vontade para perguntar, ficarei super feliz em poder ajudar!

Um forte abraço e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!