2
respostas

tenho um problema!

A função:

function sorteio()
    {
        return Math.round(Math.random() * 10) ;
    }

Ela gera números de 0 a 10. Até aqui tudo bem, mas quando quero gerar números de 1 a 10 de maneira aleatória eu não consigo.

Eu tentei dessa maneira:

function sorteio()
    {
        return Math.round(Math.random() * 10) + 1 ;
    }

Mas dessa maneira só está incrementando + 1, assim quando o número gerado for 10, ele irá ser 11, o que faz com que saia do limite definido de 1 a 10.

2 respostas

Oi Shayron!

Então, pelo que entendi a função Math.random gera sempre um aleatório entre 0 e 1, e por isso quando multiplicamos o resultado dela por 10 ela vai gerar pra gente um aleatório entre 0 e 10, manja?

Daí se você somar 1 ao resultado do arredondamento que a Math.round faz, vc vai obter sempre valores entre 1 e 11.

Uma ideia que eu tive seria colocar um if pra subtrair "1" quando vc obtiver um valor maior que 10 no final e, caso contrário, apenas daí a função sorteio retornaria direto.

Um outro jeito seria usar um laço while para manter a função rodando até encontrar um valor menor que 10, mas não sei se o curso já chegou nesse conteúdo.

Vai abaixo o código pra testar. :-D

function sorteio()
    {
    var numeroSorteado;
    numeroSorteado = Math.round(Math.random() * 10) + 1 ;

    if (numeroSorteado > 10){
        numeroSorteado = numeroSorteado - 1
        return numeroSorteado
    } else {
        return numeroSorteado
    }
}

Exatamente! Ela sempre gera numero de 0 até 10.

Tanto é verdade que na última etapa da aula 08 Manipulando Array, trata-se extamente da exclusão do número 0 do sistema de geração de números aleatórios, permitindo apenas serem validados números de 1 até 10.