[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
===================================
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Re: Sorteio de numero aleatório,
opa <=