Bash: curiosidade sobre a variável $RANDOM

Os shell’s

  • bash
  • ksh
  • zsh


fornecem uma função referenciada pela variável RANDOM que ao ser chamada, retorna um valor inteiro de 15 bits entre 0 e 32767 e que pode ser utilizada para vários propósitos.

32767 = ((2 ^ 15) – 1)

Mas se você é uma pessoa atenta, percebeu a limitação desses valores para gerar números “mais” consistentes não é verdade!?!?

Bem, MAS saiba que com um “jeitinho” podemos contornar isso fácil, fácil… Veja! 😉

echo $(((RANDOM << 16) | RANDOM))

Para tal feito, utilizamos operadores bit a bit presentes nestes shell’s.

Entendendo um pouco a manipulação bit a bit

x << y    = Desloca os bits do primeiro operando esquerdo pelo número de bits especificado pelo segundo operando e preenche a partir da direita com 0’s, lembrando que cada deslocamento significa “multiplicar por 2”.

x | y    =  Os bits no resultado são configurados como 1 se pelo menos um dos bits correspondentes nos dois operandos for 1

Mais detalhes? Consulte a boa e velha man page:

man bash

Ah, no exemplo lá de cima, foi gerado um valor inteiro de 31 bits, compreendido entre 0 e 2147483647! 🙂

2147483647 = ((2 ^ 31) – 1)

Agora é só brincar um pouco.

Falou!!!

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s