JavaFree.org | RubyOnBr.org

Sorteios aleatórios de números associados à probabilidade

Acompanhar Sorteios aleatórios de números associados à probabilidade 4 posts, 3 participantes

Avatar Alessandro Aguiar 12 posts

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…

 
Avatar Akita On Rails 298 posts

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).

 
Avatar Alessandro Aguiar 12 posts

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

 
Ceccbaaff99be20a857e00767f70b481 Proteu Alcebidiano 154 posts

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:

Teste de Wald-Wolfowitz

Teste de Kolmogorov-Smirnov

T+