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

Random() ???

Eu compreendi, e resolvi os exercícios, porém continuo com duvida quanto ao funcionamento do random() e agora possuo duvidas sobre o arredondamento. No vídeo é multiplicado por 10 o random para poder se obter 1 casa decimal, por que nos exercicios foi multiplicado por outros valores e se obteve essa restrição não deveria ter sido tratado por um if as restrições? como é o funcionamento do random exatamente? e o round ele arredonda como exatamente fiquei em duvidas quanto a isso.

3 respostas

Bom, o random() gera um numero aleatório no intervalo de 0 e 1, no caso, se você for no console de seu navegador e colocar o seguinte código:

var numero = Math.random();
console.log(numero);

Você vera que ele vai te dar um numero aleatório float(com virgula), exemplo: 0.8077406975846813, certo?

Então quando você multiplica esse numero por 10 , o primeiro numero depois da virgula irá pra frente da virgula, no exemplo que te dei ali em cima vai ficar: 8.077406975846813, se você multiplicar por 100, vai duas casas pra frente da virgula, vai ficar 80.77406975846813, e assim por diante, se você utilizar o seguinte código por exemplo:

var numero = parseInt(Math.random()*10);
console.log(numero);

Você vai ver que ele irá passar o numero para inteiro(sem virgula), ou seja 0, 1, 2, 3, 4, etc... E multiplicando o mesmo por 10, vai lhe dar um numero de 0 a 9, obs: se você não multiplicar, ele sempre vai lhe retornar 0, pois sempre vai dar um numero abaixo de 1, exemplo: 0.8077406975846813 = 0.

quanto ao math.round(), ele funciona da seguinte forma: se você tem um numero exemplo 2.5, ele irá sempre arredondar para cima, no caso 3.

Já o math.floor vai arredondar para baixo, se você tiver exemplo 2.6, o numero será 2.

Bom, espero ter conseguido lhe ajudar o/

solução!

Olá, Miguel.

O Math.random() sempre retorna um número entre 0 e 1.

Um detalhe é que o 1 não é incluso então, na verdade, o valor será entre 0 e 0.999999999999999.

Na minha máquina, rodei aqui três vezes e retornou:

0.2524460143399052
0.5888968350562254
0.8256797596159642

O que acontece se eu multiplicar por 10?

Ficaria:

2.524460143399052
5.888968350562254
8.256797596159642

Perceba que ainda temos as casas decimais.

E se usarmos junto com o Math.round()? Ele remove as casas decimais, transformando no número inteiro mais próximo. Ou seja, arredonda.

Tem uma regra interessante: se a casa decimal for menor de .5, arredonda pra baixo. Se for maior ou igual a .5, arredonda pra cima.

Nos meus exemplos acima, o que aconteceria?

Se não multiplicarmos por 10, teríamos:

0
1
1

O primeiro número tem a casa decimal abaixo de .5, então é arredondado pra baixo. Aí, fica o 0. Os dois seguinte são acima de .6, então são arrendondados pra cima. Por isso o 1.

A casa decimal de 0.2524460143399052 é .25244... que é menor que .5 então vai pra 0. Já a casa decimal de 0.5888968350562254 é .5888... que é maior que .5 então vai 1. A mesma coisa pro 0.8256797596159642.

Se consideremos o exemplo multiplicado por 10, teríamos:

3
6
8

Perceba que o resultado muda!

2.524460143399052 tem .5244... de casa decimal, que é maior que .5. Então vai pra cima a parte inteira e vira 3. O 5.888968350562254 faz a mesma coisa e vai pra 6. Já o 8.256797596159642 tem .2567... de casa decimal, que é menor que .5. Então o 8 é mantido!

Sensacional as explicações, parabéns galera!!!