Code Contest: Mega-Sena Acumulada

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.

This entry was posted in Python and tagged , , , , , . Bookmark the permalink.

7 Responses to Code Contest: Mega-Sena Acumulada

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

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

  5. LAURA [Visitante] says:

    170297

  6. 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!

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

    Abraços.

Deixe um Comentário

O seu endereço de email não será publicado Campos obrigatórios são marcados *

*

Você pode usar estas tags e atributos de HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>