If you're seeing this message, it means we're having trouble loading external resources on our website.

Se você está atrás de um filtro da Web, certifique-se que os domínios *.kastatic.org e *.kasandbox.org estão desbloqueados.

Conteúdo principal

Números aleatórios

Aprenda como gerar números aleatórios no ProcessingJS usando a função random(), e cheque seus valores usando a estrutura condicional if.
Estamos usando nossas condições if para verificar os valores referentes ao ambiente, como a posição atual do mouse do usuário, e responder previsivelmente.
Mas e se quisermos imprevisibilidade? E se quisermos que nosso programa aja de maneira diferente toda vez que for executado?
Aleatoriedade ao resgate!
Podemos gerar números aleatórios e usar as condições if e else if para alterar o comportamento do nosso programa com base nos valores aleatórios.
Por exemplo:
var randNum = random(0, 10);
if (randNum < 5) {
   text("Gostosuras!", 200, 200);
} else {
   text("Travessuras!", 200, 200);
}
O programa gera "Gostosuras!" na metade da vezes, e "Travessuras!" na outra metade.
Como funciona:
  • A variável randNum recebe um número aleatório, que começa em 0 e inclui números até 10. Os valores retornados podem incluir 0; 0,2; 3,3; 4; 5,5; 6,9; 8; 9 ou 9,99, mas não o próprio 10.
  • A condição verifica se o número retornado é menor que 5, exibindo "Gostosuras!" em caso afirmativo, e "Travessuras!" caso contrário.
Às vezes é mais fácil lidar com números inteiros em vez de números de ponto flutuante, para que possamos verificar os valores exatos. Aqui estão algumas funções que transformam números de ponto flutuante em inteiros:
  • round(): Arredonda um número para baixo, para o número inteiro mais próximo, se a parte decimal for menor que 0,5 e arredonda para cima, se a parte decimal for 0,5 ou maior.
  • ceil(): Sempre arredonda um número para cima, para o próximo valor inteiro.
  • floor(): Sempre arredonda um número para baixo, para um valor inteiro.
Normalmente, queremos gerar números aleatórios que são escolhidos de maneira relativamente uniforme. Por exemplo, se estivermos simulando o lançamento de uma moeda, esperamos que exista uma probabilidade igual de "Caras" ou "Coroas".
Este código cumpre esse propósito:
var randFlip = floor(random(0, 2));
if (randFlip === 0) {
   text("Cara", 200, 200);
} else {
   text("Coroa", 200, 200);
}
A variável randFlip sempre será 0 ou 1, já que a função chama floor()no valor de retorno de random (0, 2).
Para termos uma ideia de por que isso acontece, veja o resultado obtido ao chamar floor() para vários valores de random(0, 2):
random(0, 2)floor(resultado)
0.00
0.217…0
0.542…0
0.973…0
1.01
1.332…1
1.589…1
1.999…1
Os valores de retorno de random() são aleatórios, então eles não serão necessariamente tão distribuídos quanto os valores nessa tabela. Se você executar o código de lançamento de moedas apenas 10 vezes, você pode ter uma sequência com apenas "Caras" ou com apenas "Coroas". No entanto, se você executá-lo milhares de vezes e continuar contando, verá "Caras" e "Coroas" em aproximadamente 50% das vezes.
Como regra geral, quando nosso objetivo é obter uma distribuição justa e uniforme de valores inteiros, é melhor usar floor() com random().
A função random() é uma ótima maneira de adicionar um pouco de variedade aos seus programas. No entanto, use-a com cuidado: descubra o intervalo de números que você está gerando, decida se precisa arredondar os números e verifique os valores adequadamente.
Você terá a chance de experimentar isso no próximo projeto!

Quer participar da conversa?

Você entende inglês? Clique aqui para ver mais debates na versão em inglês do site da Khan Academy.