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.
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.
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.
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.