Qual o maior número da variável RANDOM?
Dica publicada em Shell Script / Variáveis
Qual o maior número da variável RANDOM?
Pessoal, a variável RANDOM no Linux tem por objetivo gerar um número aleatório. O comando:
echo $RANDOM
Exibirá um número aleatório por vez. Tive a curiosidade de saber qual o maior número que esta variável poderia gerar. Após criar um script que atendesse este meu objetivo, verifiquei que o maior número é o 32767.
Com este resultado tive outra curiosidade: "Quantas vezes, em média, precisamos executar a variável RANDOM para vermos o numero 32767?"
No script bolei a seguinte forma: é um loop infinito que dispara a variável RANDOM e verifica se a mesma chegou ao 32767. Assim que identificar este número uma mensagem é enviada ao log relatando quantas execuções do random foram necessárias. Em seguida o script volta ao seu início, zera o contador e manda bala de novo.
Esperei o meu teste encontrar o número 32767 por 60 vezes e tirei uma média dos valores. Veja as primeiras linhas do log:
Tirei a média somando as vezes (loop) e dividindo pela quantidade de linhas, que no meu caso foram 60 rodadas. A média foi de 34117.
Este exemplo é apenas para treinar uma lógica de programação em shell-script, pois não tem utilidade alguma no dia-a-dia, se tem eu não conheço!! :-/
É como aqueles exercícios de colégio/vestibular:
- Para que você quer saber a quantidade de Joules que o João utilizou para quebrar o tijolo?
- Qual a finalidade de saber a quantidade de metros cúbicos da mistura de gases dentro de um recipiente?
- Por que tantas fórmulas gigantescas de trigonometria para achar um ângulo?
E por aí vai...
Esta dica é apenas para treinar mesmo! Se alguém descobrir alguma utilidade me conta :-)
Segue o script:
Só salvar e rodar, bom divertimento!! :-)
echo $RANDOM
Exibirá um número aleatório por vez. Tive a curiosidade de saber qual o maior número que esta variável poderia gerar. Após criar um script que atendesse este meu objetivo, verifiquei que o maior número é o 32767.
Com este resultado tive outra curiosidade: "Quantas vezes, em média, precisamos executar a variável RANDOM para vermos o numero 32767?"
No script bolei a seguinte forma: é um loop infinito que dispara a variável RANDOM e verifica se a mesma chegou ao 32767. Assim que identificar este número uma mensagem é enviada ao log relatando quantas execuções do random foram necessárias. Em seguida o script volta ao seu início, zera o contador e manda bala de novo.
Esperei o meu teste encontrar o número 32767 por 60 vezes e tirei uma média dos valores. Veja as primeiras linhas do log:
Necessitou de 31487 vezes para atingir o numero maximo
Necessitou de 37449 vezes para atingir o numero maximo
Necessitou de 56487 vezes para atingir o numero maximo
Necessitou de 46726 vezes para atingir o numero maximo
Necessitou de 34105 vezes para atingir o numero maximo
Necessitou de 12219 vezes para atingir o numero maximo
...
...
...
Necessitou de 37449 vezes para atingir o numero maximo
Necessitou de 56487 vezes para atingir o numero maximo
Necessitou de 46726 vezes para atingir o numero maximo
Necessitou de 34105 vezes para atingir o numero maximo
Necessitou de 12219 vezes para atingir o numero maximo
...
...
...
Tirei a média somando as vezes (loop) e dividindo pela quantidade de linhas, que no meu caso foram 60 rodadas. A média foi de 34117.
Este exemplo é apenas para treinar uma lógica de programação em shell-script, pois não tem utilidade alguma no dia-a-dia, se tem eu não conheço!! :-/
É como aqueles exercícios de colégio/vestibular:
- Para que você quer saber a quantidade de Joules que o João utilizou para quebrar o tijolo?
- Qual a finalidade de saber a quantidade de metros cúbicos da mistura de gases dentro de um recipiente?
- Por que tantas fórmulas gigantescas de trigonometria para achar um ângulo?
E por aí vai...
Esta dica é apenas para treinar mesmo! Se alguém descobrir alguma utilidade me conta :-)
Segue o script:
#!/bin/bash
k=0
j=0
while true
do
i=`echo $RANDOM`
if [ $i -ge $j ]; then
j=$i
echo "Maior numero: $i"
if [ $i -eq 32767 ]; then
echo "Necessitou de $k vezes para atingir o numero maximo" >> maximo.txt
k=0; j=0
fi
else
echo "Maior numero: $j"
fi
let k++
echo -e "Quantidade de rodadas: $k\n"
done
k=0
j=0
while true
do
i=`echo $RANDOM`
if [ $i -ge $j ]; then
j=$i
echo "Maior numero: $i"
if [ $i -eq 32767 ]; then
echo "Necessitou de $k vezes para atingir o numero maximo" >> maximo.txt
k=0; j=0
fi
else
echo "Maior numero: $j"
fi
let k++
echo -e "Quantidade de rodadas: $k\n"
done
Só salvar e rodar, bom divertimento!! :-)
Neste jogo rsrs http://www.vivaolinux.com.br/script/Blackjack-simples-para-estudo-de-iniciantes-em-C