shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Sorteio de numero aleat�rio


From: opa
Subject: Re: Sorteio de numero aleatório
Date: Thu, 22 Apr 2004 22:45:55 -0300 hrN

Estou aceitando que $RANDOM tem probabilidade perfeitamente distribuida.

É possível obter razoável uniformidade de probabilidade em um 
intervalo com:

min=0;max=100;echo $[$min+($RANDOM*($max-$min+1)-1)/32767]

É só isso!

-- # Visualizando probabilidades, só para sentir:
min=0;max=100;Z=' '
while true;do
 z=$RANDOM
 z=$[$min+($z*($max-$min+1)-1)/32767]
 echo "$Z"|grep -q " $z "||{ Z="$Z$z ";echo -n "$z ";}
done
# Números que aparecem freqüentemente:
# - no início da lista têm probabilidade maior
# - no final da lista têm probabilidade menor
# Como a expressão usada é a mesma proposta acima não deve 
haver tendência perceptível

Não é possível ter o mesmo número de possibilidades para todos os números 
pegando só a parte inteira, pois a divisão do número de valores possíveis de 
$RANDOM pelo número de possibilidades de saída desejadas não é inteiro, 
lembrando que zero é um elemento como outro qualquer:
$ echo 'scale=6;32768/101'|bc
324.435643

-- # Verificando número de possibilidades para 3 pontos da faixa de saída:
 faixa $RANDOM  =>  result  possib
    0 ...   324 =>    0      325
16222 ... 16545 =>   50      324
32443 ... 32767 =>  100      325

Acho que esse desvio (1/325~0,3%) é tolerável para qualquer tipo de aplicação.

Para usar com várias faixas, pode ser prático criar uma função com $1=min e 
$2=max que retorna um número aleatório no intervalo dado, chamada assim:

rand 0 100

Ah, e este tema despertou interesse em sequencialização aleatória de números 
de intervalo de inteiros citada em várias mensagens; o script de visualização 
acima (aquele com o while) deve dar uma saída que acaba sendo exatamente isso.

Espero ter contribuido e não dito nenhuma besteira!  :)

Se for usar isso em algum jogo de azar:
Boa Sorte! :)

----------------------------------------------------------------
De:   Wagner Nunes <hunter_paragon@y...> 
Data:  Qui Abr 22, 2004  3:37 am
Assunto:  Sorteio de numero aleatório

        
Salve galera!!!

Seguinte... ... existe alguma maneira de, via script, realizar o sorteio de um
numero inteiro aleatório... .... tipo entre 1 e 100 por exemplo???

valeu!!!

--
===================================
Wagner S. Nunes
LinuxUser 317536
UIN 82331461
-----------------------
BE FREE, USE LINUX
===================================






reply via email to

[Prev in Thread] Current Thread [Next in Thread]