A função Math.random() no JavaScript na criação de números pseudoaleatórios

A função Math.random() no JavaScript na criação de números pseudoaleatórios

Antes de iniciar o artigo, vamos jogar RPG? Eu serei a mestra e você a jogadora ou jogador.

Um grupo de aventureiros composto por uma maga, um arqueiro, uma espadachim, um curandeiro e um bardo estavam viajando pelo reino congelado para comprar equipamentos e suprimentos. Ao passar pela entrada de um comércio de bebidas locais, havia um cartaz que informava que estavam em busca de uma equipe para resolver um problema com os Yetis que estavam assustando trabalhadores nas montanhas congeladas.

Interessados pela recompensa, o grupo se dirige às montanhas congeladas em busca dos Yetis. Ao encontrá-los, começam a planejar uma estratégia. Ignorando a todos, o bardo escolhe tentar conversar com o Yeti, por entender que ele era o líder.

Para descobrir como o Yeti irá reagir, você precisa rolar o dado de 20 lados (conhecido como D20), torcendo para cair um número alto que acarretará em uma situação boa pro grupo de aventureiros.

Dado de 20 lados rolando em uma mesa de madeira.

Se analisarmos essa ação com o dado, podemos interpretar que o que estamos fazendo é a geração de um número aleatório. Como você, pessoa desenvolvedora, pode construir um código que simula isso, para utilizarmos nessa história com o intuito de descobrir o final?

O JavaScript, através do objeto Math, que tem propriedades e funções para realizar cálculos matemáticos, nos auxilia com a função Math.random().

Math.random

A função Math.random() é usado para retornar um número pseudoaleatório de ponto flutuante entre 0 e 1. Um número de ponto flutuante é o modo como o computador representa números reais. Para melhor entendimento, alguns possíveis retornos desse método são: 0.8244415641011535, 0.08506031872225872, entre outros valores.

Nos referenciamos a esse número como pseudoaleatório pois é difícil criar um comando que faça o computador executar algo por acaso. Por padrão, um computador executa instruções, o que faz ele se tornar previsível. Você pode entender melhor sobre isso no vídeo “por que computadores não podem gerar números aleatórios?” do canal “Ciência todo dia”.

Este número pseudoaleatório pode então ser escalado de acordo com o intervalo desejado, multiplicando o número de ponto flutuante pelo número máximo que queremos gerar. Imagine que você precise de um número pseudoaleatório entre 0 e 20, que é o valor de lados de um dado D20, isso é possível através da fórmula Math.random() * 21.

Ainda assim, por tratarmos de números reais, os retornos podem ser números gigantes: 2.9684646703687076, 4.252057315392286 e etc. Então, como podemos transformar esses retornos em números inteiros?

Math.floor()

A função Math.floor() é usada para arredondar o número passado como parâmetro para seu inteiro mais próximo, levando como base o valor menor. Vamos fazer um teste, levando em consideração o caso anterior, onde gostaríamos de receber um valor de 0 a 20.

console.log(Math.floor(Math.random() * 20));
/*será imprimido no console um número inteiro de 0 a 20*/

Aqui, já conseguimos gerar um número inteiro pseudoaleatório. Mas seria essa a única maneira?

parseInt()

Outra alternativa para transformar o número de ponto flutuante retornado da função Math.random() em um número inteiro é o uso do parseInt(). O método parseInt analisa um valor passado como parâmetro como uma string e retorna o primeiro número inteiro. Vamos utilizá-lo para receber um valor de 0 a 20?

console.log(parseInt(Math.random() * 20));
/*será imprimido no console um número inteiro de 0 a 20*/

Na prática, esse método funciona assim: Imagine que você recebeu o valor 19.326843049629467, ele irá pegar o primeiro valor inteiro, ou seja, o número 19.

Banner promocional da Alura, com um design futurista em tons de azul, apresentando dois blocos de texto, no qual o bloco esquerdo tem os dizeres:

Conclusão

Através da solução construída, você rolou os dados virtuais e gerou um número pseudoaleatório com o auxílio da função Math.random(), em seguida, transformou em um número inteiro: 19.

Com isso, o bardo da sua equipe deu sorte! Ao tentar falar com o Yeti, descobriu que ele falava a mesma língua e não queria machucar ninguém: só queriam evitar que os trabalhadores do reino destruíssem suas árvores.

Yeti segurando um humano que escorrega entre suas mãos.

Gostou da aventura? Imagine quanta coisa você consegue construir através da sua criatividade e um pouquinho de conhecimento em programação. Se você ainda é iniciante, é possível estudar e conhecer mais sobre o JavaScript na formação iniciante em programação que possui o foco em ensinar tópicos que auxiliarão no início da trajetória da pessoa desenvolvedora e foi construída com essa linguagem de programação.

Caso você já tenha optado pelo caminho do front-end e deseja se aprofundar em JavaScript, não deixe de visitar a nossa formação JavaScript para front-end e caso seu interesse seja em back-end, conheça a formação JavaScript para back-end.

Mônica Mazzochi Hillman
Mônica Mazzochi Hillman

Bacharela em Tecnologias Digitais, especialista em User Experience e pós graduanda em Docência e Performance na Educação a Distância com experiência em suporte técnico de T.I e com tecnologias front-end. Durante a graduação foi vice-presidente do diretório acadêmico e monitora de LIBRAS. Atualmente é instrutora na Alura. Nas horas vagas gosta de assistir animes e produções da marvel, ouvir kpop e post-hardcore, jogar Valorant e Genshin Impact e praticar culinária.

Veja outros artigos sobre Front-end