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

Dúvida sobre a função "Sorteia"

Durante o desafio, é solicitado que seja criado uma função chamada sorteia, para que ela faça a função de gerar o número aleatório e arredondá-lo. Porém logo em seguida, é criado a variável numeroPensado que recebe da função sorteia o número em questão. A minha dúvida é, por que o a função sorteia está contendo o valor 10, como mostra a seguir:

function sorteia(numero){

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

    }

    var numeroPensado = sorteia(10);

Eu fiquei na dúvida sobre esse pequeno detalhe. Consegui pensar no resto todo da questão, menos nesse detalhe. Agradeço pela ajuda.

5 respostas

Salomão, a função Math.random() retorna um número decimal entre 0 e 1 baseado numa conta louca interna do computador. Sendo assim, devemos multiplicá-la pelos números que queremos sortear, nesse caso de 1 a 10. Se vc multiplicar, por exemplo, o randômico 0.57... por 10 o resultado será 5.7 e arredondado fica 6. Há outra forma de se escrever essa mesma função:

function sorteia(numero){
        return Math.random().Next(1, numero);
    }
    var numeroPensado = sorteia(10);

Espero ter ajudado. Se ajudei, marque essa resposta como solucionada. Obrigado! Abs

Ajudou bastante! Então, eu estava repensando sobre isso e eu fiz uma modificação no código, inserindo o console.log() para ver como funcionava e fiz mais alguns testes. No meu entendimento, quandosorteia() contém um valor, que pode ser qualquer um (Ex: 10, 20, 100), ele vai gerar números aleatórios dentro desse range. Eu fiz o teste de colocar "5", ele só gerava números entre 0 e 5 e por assim em diante. Dito isso, eu acredito que a função sorteia(10) é a mesma coisa que Math.random(Math.round() * 10));. Caso eu esteja errado no que eu disse, por favor me corrija. Obrigado pela ajuda.

Na verdade então eu que estou errado pois faltou somar 1 no código abaixo, porém é mais usual o Next().

return Math.round(Math.random()*10+1);

Mais usual:

Random rnd = new Random();
return rnd.Next(1,10);
solução!

Salomão, poderia marcar como solucionada? Valeu Abraço!!

Bacana galera! Final feliz aqui!!!