Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Não entendi!

Por que Temos que Colocar Valores, como: var numeroSorteado = sorteia(10); se o computador é que irá escolher um número aleatório?

4 respostas

Oi Cláudia!

Pelo que entendi, é porque o programa escolhe um número entre zero e o número que vai ser processado na função "sorteia". Tudo bem que o programa já fazia isso antes, só multiplicando o Math.random pelo número desejado, mas creio que foi passado o exercício para, além de treinarmos construir funções, também pensarmos sobre deixar o programa mais enxuto, menos poluído e mais fácil de alterar.

solução!

Essa foi minha duvida também, fiquei analisando a função e não entendi pra que colocar o numero 10 se o numero vai ser processado aleatório pelo próprio programa.

Se eu coloco por exemplo o numero 5 ele mostra "Você errou! Seu chute é maior que o número pensado!"

Isso se deve por causa da função que criamos, veremos essa parte do código:

<script>

 function sorteia(n) {  // Criamos uma função chamada sorteia que possui um parâmetro (n)

        /* Esse " n " é um número qualquer, por enquanto não tem valor algum, mas olhando a instrução
        abaixo, que será executada quando chamar a função, sabemos que esse " n "  está multiplicando uma outra função
        chamada Math.random() e que este Math.random() está dentro de outra função nomeada Math.round(). Então aqui
        chamamos duas funções: */

        return Math.round(Math.random() * n); 
    }    
    var numeroPensado = sorteia(10); // Aqui estamos chamando a função que criamos com um argumento.
    /* E estamos atribuindo o valor que sorteia(10) retorna à variável "numeroPensado", o que sorteia(10) retorna?
    justamente o resultado da operação matemática que está depois do 'return'  -> return Math.round(Math.random() * 10); 
    Mas agora perceba que o parâmetro ' n ' está sendo substituído pelo nosso agurmento que é 10, agora ' n ', possui um valor! 

</script>

Obs:. No JavaScript há algumas funções já pré definidas, como na biblioteca Math há várias funções/métodos que estamos chamando dela, como random() e round(), e todas elas tabém utilizam parâmetros para executar o cálculo delas.

Agora que entendemos o código, basta entender a operação que está sendo realizada:

1- Math.random() retorna um número pseudo-aleatório entre 0 (inclusivo) e 1 (exclusivo).

Ou seja retorna números como: 0.48498984 - 0.65451556564 - 0.4984987984 - 0.89849849484 e nunca o valor 1.

2- Não queremos número entre 0 e 1.

Então ao multiplicarmos os números acima por 10 (que é foi o nosso argumento em sorteia(10)), temos o seguinte resultado: 4,8498984 - 6,545155656 - 4,984987984 - 8,984984948. E assim temos as casas de unidade que queremos que é de 0 até 9.

3- Não queremos números decimais, queremos números inteiros.

Então chamamos Math.round() para arredondadar para o inteiro mais proximo. Aí fica: 5 - 7 - 5 - 9, como round() arredonda para o mais próximo, se o número aleatório ser 0.9885226, teremos o 10!

Concluindo, se queremos um número aleatório de 0 até 100 unidades, basta mudarmos o nosso argumento de 10 para 100:

<script>
    // Então a operação que será excecutada no sorteia(100) será assim:
    //  Math.round(Math.random() * 100); 

    function sorteia(n) {

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

    var numeroPensado = sorteia(100);

</script>

Muitissimo obrigada!!!

Agora eu entendi!!! :)