muitas vezes ao desenvolver projetos, você vai encontrar-se à procura de formas de gerar números aleatórios.
os casos de uso mais comuns para gerar números aleatórios são jogos de azar como dados rolantes, baralhar cartas de jogo e roleta giratória.
neste guia, irá aprender a gerar um número aleatório usando o método Math.random()
construindo um mini jogo de dados.
a matemática.,random () method
The Math
object in JavaScript is a built-in object that has properties and methods for performing mathematical calculations.
a common use of the Math
object is to create a random number using therandom()
method.
const randomValue = Math.random();
But theMath.random()
method doesn’t actually return a whole number. Em vez disso, devolve um valor de vírgula flutuante entre 0 (inclusive) e 1 (exclusivo)., Além disso, note que o valor retornado de Math.random()
é pseudo-aleatório por natureza.
números aleatórios gerados por Math.random()
podem parecer aleatórios, mas esses números irão se repetir e eventualmente exibir um padrão não-Aleatório ao longo de um período de tempo.
isto é porque a geração algorítmica aleatória de números nunca pode ser verdadeiramente aleatória na natureza. É por isso que os chamamos de geradores de números pseudo-aleatórios (PRNGs).
para saber mais sobre o método Math.random()
pode consultar este guia.,
Função Gerador de Números Aleatórios
Agora vamos usar o método Math.random()
para criar uma função que irá retornar um inteiro aleatório entre dois valores (inclusive).
const getRandomNumber = (min, max) => { return Math.floor(Math.random() * (max - min + 1)) + min;};
Let’s break down the logic here.
O método Math.random()
devolve um número de vírgula flutuante entre 0 e 1 (exclusivo).
assim, os intervalos seriam os seguintes:
[0 .................................... 1)[min .................................... max)
para factor o segundo intervalo, subtrai min de ambas as extremidades. Isso lhe daria um intervalo entre 0 e max-min
.,
[0 .................................... 1)[0 .................................... max - min)
Então, agora, para obter um valor aleatório, você deve fazer o seguinte:
const x = Math.random() * (max - min)
Aqui x
é o valor aleatório.
actualmente, max
está excluído do intervalo. Para torná-lo inclusivo, adicionar 1. Além disso, você precisa adicionar o min
de volta que foi subtraído anteriormente para obter um valor entre [min, max)
.
const x = Math.random() * (max - min + 1) + min
tudo bem, então agora o último passo restante é garantir que x
é sempre um inteiro.,
const x = Math.floor(Math.random() * (max - min + 1)) + min
você poderia usar o Math.round()
método em vez de floor()
, mas isso dar-lhe-ia uma distribuição não uniforme. Isto significa que ambos max
e min
terão meia chance de sair como resultado. Usando Math.floor()
dar-lhe-á uma distribuição perfeitamente uniforme.
então agora que você tem uma compreensão justa de como uma geração aleatória funciona, vamos usar esta função para simular dados rolantes.,
o jogo de dados rolantes
nesta secção, vamos criar um mini jogo de dados realmente simples. Dois jogadores digitam o seu nome e lançam os dados. O jogador cujos dados têm um número maior ganhará a rodada.
Primeiro, crie uma função rollDice
que simula a ação para rolar os dados.
Dentro do corpo da função, chamada de getRandomNumber()
função 1
e 6
como argumentos. Isto dar-lhe-á qualquer número aleatório entre 1 e 6 (ambos inclusivos), tal como a forma como os dados reais funcionariam.,
const rollDice = () => getRandomNumber(1, 6);
em seguida, crie dois campos de entrada e um botão, como mostrado abaixo:
Quando o ‘Roll Dice’ botão é clicado, tem o jogador de nomes de campos de entrada e chame o rollDice()
função de cada jogador.
Você pode validar os campos de nome dos jogadores e aperfeiçoar a marcação com algum CSS. Para ser breve, estou a manter as coisas simples para este guia.é isso. Podes ver a demo aqui.
Conclusion
So generating random numbers in JavaScript is not so random after all., Tudo o que estamos fazendo é pegar alguns números de entrada, usar alguma matemática, e cuspir um número pseudo-aleatório.
para a maioria das aplicações e jogos baseados em navegador, esta aleatoriedade é suficiente e serve o seu propósito. é tudo para este guia. Mantém-te em segurança e continua a codificar como uma besta.