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

Dúvida no Ex. 1 da Aula 5 - Desafio Final

Olá galera :) Alguém poderia me explicar esta parte do código?

  1. var sorteia = function(max) {
  2. return Math.floor(Math.random() * max);
  3. }

Eu não entendi ...

2 respostas
solução!

Oi Nick, beleza?

Vamos lá, vou explicar linha a linha, ok?

var sorteia = function(max) {
  return Math.floor(Math.random() * max);
}

Na 1ª, você está criando uma função, que precisa de uma informação pra funcionar (esse 'max').

Na 2ª, você está chamando uma função que arredonda números. Tenta depois usar Math.floor(5.46) e vai ver que ele arredonda pra baixo (por isso o 'floor').

Dentro da Math.floor(), você está pedindo ao JS mandarum número aleatório, um número random, com a função Math.random().

O problema da Math.random() é que ela retorna algo assim: 0.07735756584831677. Por isso da multiplicação pelo 'max'.

Resumindo essa função faz o seguinte: - Sorteie um número; - Multiplique-o por max (que será passado qnd chamar a função); - Pegue esse número e o arredonde para baixo (Math.floor() ); - Me retorne o resultado disso tudo.

Espero ter ajudado e bons estudos pra você!

Abcs!

E ai Nick,

Vamos por partes.

Primeiro o número máximo (max) é passado por parâmetro.

Segundo, o método Math.random gera um número aleatório entre 0 e 1, daí ele é multiplicado pelo número máximo.

Terceiro, o método Math.floor devolve um número inteiro, caso necessário.

Suponha que saiu 0.537 e que o número max seja 60, então em outras palavras o que acontece é isso, veja:

0.537 * 60 = 32.22

Neste exemplo, será devolvido 32 e em seguida, o resultado é retornado para a função através do return.

Vendo de outra forma:

var sorteia = function(max) { 
     return Math.floor(Math.random() * max); 
 } 

var sorteia = function(60) { 
     return Math.floor(0.537 * 60); // 32.22 -> 32 
 }