Sorteios aleatórios de números associados à probabilidade
|
|
Pessoal, estou para desenvolver um sistema e o mesmo depende de sorteios de numeros aleatórios, mas eu queria que fosse uma coisa do tipo que se um número não saisse muito nesses sorteios, o algoritmo de uma forma ou de outra desse um jeito de equilibrar essa situação. Conversando com o Glaucio (Proteu), ele me fez a caridade de ceder um algoritmo que eu passei para o Ruby com algumas alterações. Portanto estou disponibilizando aqui, pois se alguém precisar de algo parecido ai esta. Lembrando que isso é só o começo do negócio, poderíamos fazer muitas adaptações de acordo com as necessidades de cada um. Claro se alguém quiser criticar, alterar estejam a vontade. Estou começando a aprender ruby e rails, se tiver uma forma melhor de escrever esse script é só postar ai.. Valeu… |
|
|
Hm, não sei onde você vai usar isso, mas está longe de ser um número “aleatório” no sentido clássico da palavra. Isso é um pseudo-random bem fraco. Se der uma sequência como 1, 2, 3, 3, 3 isso não quer dizer que isso não seja aleatório. Claro, se der essa mesma sequência o tempo todo algo está muito errado :-) Um algoritmo local no seu computador nunca será capaz de gerar aleatoriedade real. Sugiro ver este artigo sobre RealRand, um gerador de números aleatórios que usa serviços via internet para buscar um número aleatório. Este site oferece números baseados numa interface do computador com um Geiger-Müller medindo decadência radioativa. Somente a natureza é capaz de criar números realmente aleatórios. Claro, que isso pode ser overkill, não tenho nem idéia do que você pretende :-) No iTunes, por exemplo, a função Shuffle deveria ser o mais aleatória quanto possível, mas isso poderia levar a mesma música a tocar duas vezes seguida. Ou duas músicas do mesmo artista. Isso é inevitável. Então eles fizeram o que você falou: “mexeram” de tal maneira que esse tipo de situação fosse evitado para que o ouvinte tivesse um Shuffle mais agradável. Agora, se a idéia é usar num sorteio de prêmios, concurso, ou – principalmente – segurança, procure um gerador confiável verdadeiramente aleatório. Caso contrário das duas uma: ou você não estará sendo realmente justo (se for um concurso) ou estará com um sistema fraco (caso seja para segurança). |
|
|
Akita, aonde vou usar esse script, não tem necessidade de nada tão elaborado como os artigos sugeridos. O que eu tentei fazer ai foi equalizar as coisas para que todos os números possam ter as mesmas chances e não o contrário. Valeu pela indicação dos artigos, achei muito legal. Alessandro |
|
|
Hum, legal que a idéia teve um feedback =) A idéia, Fábio, não é mesmo fazer um algoritmo completamente aleatório (pelo contrário), o intuito é fazer com que os sorteios realizados deixem a frequencia de sorteios balanceada. Note que ele só deixa escolher se a probabilidade de escolha for menor do que a média de probabilidades (logo, a média de probabilidades irá cair gradativamente…sugeri para o Alessandro alguns sorteios fora desse critério, semelhante a uma mutação em AGs, para fazer com que a média não caia muito). Um exemplo é sobre escolha de fotos…qualquer fotinho selecionada teria a chance de aparecer aleatoriamente, mas favorecendo as fotos que tem menos frequencias de sorteios acumuladas. Quanto aos comentários do Fabio sobre aleatoriedade, aos interessados em técnicas de simulação, existem testes interessantes para aferir aleatoriedade em distribuições estatísticas: T+ |

