7
respostas

Não entendi a resolução do exercicio

Foi pedido para eu fazer um "jogo" no qual o usuário tem que chutar um numero de 1 a 100 caso ele acerte aparecerá uma mensagem notificando do acerto, e se ele errar outra mensagem notificara do erro. Porém eu devia criar uma "function" sortear. Meu programa deu certo, porém na resolução estava diferente e eu não entendi o porque

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

    function pulaLinha() {

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

    function mostra(frase) {

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

    function sorteio() {

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

    var numeroPensado = sorteio();

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

    if(chute == numeroPensado) {

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

    if(chute < numeroPensado) {
        mostra("Seu número é menor que o número pensado");
    }
    if(chute > numeroPensado) {
        mostra("Seu número é maior que o número pensado");

    }

    mostra(" O Número pensado foi " + "<h1>" + numeroPensado + "</h1>");

</script>

A diferença era que no Function "sorteio" da resolução era assim

  function sorteia(n) {

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

~Minha duvida, da onde veio esse n?

7 respostas

Bom dia!

A solução cria uma função mais flexível que te permite passar a quantidade de casas decimais do número sorteado. No seu caso, você multiplica fixo por 100, perfeito. Mas no caso da resposta, n é o número que você pode escolher passar, por exemplo, 10, 1000, 10000.

O "n" é só uma variável.

Então basicamente é só eu criar uma

var n = 100

E depois trocar na fórmula

Da forma que foi feita a função, ela fica dinâmica, e você escolhe com quantas casas decimais quer que seja multiplicado. Caso você queira criar uma variável vai ficar um valor fixo para a multiplicação e caso você queira alterar toda vida vai ter que ajustar no código. Da forma que o professor fez fica mas flexível.

Pelo que entendi, desta forma, conseguimos criar um número aleatório de 0 a n, sendo n múltiplos de 10. E se eu quiser sortear um número, por exemplo, de 0 a 23? Pensei uns 10 min aqui e não achei a resposta. Não sei se tem que usar loop ou alguma ferramenta ou função que ainda não aprendemos. Alguém sabe como fazer isso?

Até onde eu entendi o Math.random gera um número qualquer entre 0 e 1 quando você usa a função da seguinte forma Math.round(Math.random()); ele só vai gerar números inteiros entre 0 e 1 ou seja só zero ou só um.

Quando você usa a variável n, na seguinte forma Math.round(Math.random()n); você aumenta o leque de número aleatórios que o Math.random vai gerar por que ele vai procurar números entre 0n e 1*n. Como qualquer número multiplicado por zero é zero (exceto o próprio zero). ele vai gerar um número aleatório entre 0 e n

Oi Gabriel Ferreira de Carvalho esse número gerado pela função Math.random não é inteiro somente o 0 ou 1, e sim um número com ponto flutuante, ou seja pode ser:

0.14031122988608757

Por isso usamos a função Math.round para arredondarmos esse valor depois, outro detalhe importante é que ela gera números entre [0,1) ou seja o um não está incluso.

Espero ter te ajudado e bons estudos.

Oi Marcio Alves não eiste relação com múltiplos, para gerar números é bem simples, basta saber meu limite se meu limite é 23 basta fazer:

Math.round(Math.random()*23);

Espero ter te ajudado e bons estudos.

Oi Henrique Venancio Galvan basicamente faltou só implementar a questão 1 do desafio, e o caminho é justamente esse criar uma variável que representará meu limite.

Espero ter te ajudado e bons estudos.