Code Contest: Mega-Sena Acumulada

por Walter Cruz on 01/09/2007
in Python

Link: http://macacochefe.blogspot.com/2007/08/code-contest-em-tempos-de-mega-sena.html

Em resposta do desafio do Rodrigo Sol, que eu li no blog do José Oliveira e no blog do Daniel Martins, que consiste em rodar 100000 jogadas de números aleatórios de 1 a 60 e ver quais os que saíram mais.


from random import randrange
from itertools import groupby
from operator import itemgetter
x = [item for item in sorted([(k, len(list(g))) for k, g in groupby(sorted([randrange(1,61) for item in xrange(0,100000)]))],key=itemgetter(1),reverse=True)][:6]
print(x)
 

O código ficou comprido, mas eu achei razoavelmente fácil de ler (bom, fui eu quem escreveu, sou suspeito). Algumas coisas legais do python: o randrange (gerar números aleatórios numa range. Existe também o randint para esse fim, com a diferença que o randint inclui o último número e o randrange pára um número antes do fim do range. Além disso, o randrange me pareceu um pouquinho mais rápido). O groupby parece coisa de banco de dados, e é mesmo uma pitada de álgebra relacional aplicada aqui.

Aliás, essa não é a primeira vez que eu faço algum código relacionado à mega-sena: usando Python mesmo, e a planilha de resultados que se pode obter no site da caixa, eu verifiquei quais os números que tinham saído mais vezes. Até a última vez que eu verifiquei, o número mais comum era o 42.

Por falar em groupby e no módulo itertools, no Python Cookbook existe uma implementação dos algoritmos de junção de banco de dados usando esses carinhas. Se você gostar de banco de dados como eu, vale a pena conferir.

Endereço de trackback para este post

Trackback URL (clique direito e copie atalho/localização do link)

7 comentários, 2 trackbacks


Notice: Undefined index: comment_secret in /home/walter/repositories/whissip-dev/blogs/inc/comments/model/_comment.class.php on line 161
  1. Helen Email says :

    Enfim , vc sabe q num entendo nda disso , mas esses dias em meio a um surto de desespero e esperança de resolver a vida (no que diz respeito a dinheiro) rápido eu joguei na mega o único numero q acertei foi o 42, rs. bjks

  2. Vai que nesses códigos sai um ganhador... hehehe
    Estudar python está na minha lista de coisas a fazer já.

  3. Trackback de: Blog do Urubatan [Visitante]

    Usando Ruby para ficar Rico!
    Com a Mega Sena acumulada neste fim de semana resolvemos fazer um “bolão” para ver se saia pelo menos uma quadra pra pagar um churrasco
    Só vamos ficar sabendo do resultado na segunda pela manha pois os bilhetes estão em uma gaveta no es...

  4. Rapaz, se eu não estou enganado, 42 é a resposta para a Pergunta Fundamental da Vida, do Universo e Tudo Mais (http://pt.wikipedia.org/wiki/The_Hitchhiker's_Guide_to_the_Galaxy).

  5. Urubatan Email says :

    Sim, 42 é a resposta para a vida o universo e tudo mais :D
    só falta descobrir qual é a pergunta (tudo a ver com o tópico :D )

  6. Trackback de: Blog do Urubatan [Visitante]

    Code Contest: Mega-Sena Acumulada
    Ja que o Walter Cruz disse que o outro código que eu postei não tinha nada a ver com o contest (na verdade não tinha mesmo).
    Segue o meu código para participar do Code Contest do Rodrigo Sol, que consiste em gerar 1000 jogadas para a mega sena que ...

  7. LAURA says :
    *----

    170297

  8. Tadeu says :
    ****-

    Olá, deixo como sugestão de visita o meu site sobre a Mega Sena: http://megasorte.net Tem vários recursos legais, Simulador de Apostas, Sistema de Lembretes, entre outros. Obrigado!

  9. *****

    Bom, eu sei que o post é antigo, mas vale ressaltar que no python 3 substitui o xrange por range. :)

    Abraços.

Share Your Thoughts


Seu endereço de e-mail não será revelado nesse site.

Sua URL será exibida.
PobreExcelente
(Quebras de linha se tornam <br />)
(Nome, e-mail & website)
(Permitir que usuários o contatem através de um formulário eletrônico (seu e-mail não será exibido.))
Subscribe to comments by email

You can just use your OpenID to provide your name, e-mail and url.