Algoritmo de Otimização de Apostas da Mega-Sena e Lotofacil via Simulações de Monte Carlo, desenvolvido em Python apenas para motivos de estudos. Ele tem como objetivo otimizar a cobertura combinatória de 7 jogos de 6 dezenas (de 1 a 60), maximizando as chances de acertos menores (Quadra e Quina) e reduzindo sobreposição entre apostas.
- Python 3.12+ instalado
- Bibliotecas:
numpy,pandas
uv sync# Mega-Sena
# Execução padrão (rápida / reprodutível)
uv run mega_monte_carlo_optimizer.py --n-candidates 1400 --shortlist 80 --draws 40000 --seed 2025 --out-prefix resultados/mega_opt
# Execução mais robusta (mais estável, mais lenta)
uv run mega_monte_carlo_optimizer.py --n-candidates 4000 --shortlist 120 --draws 120000 --seed 2025 --out-prefix resultados/mega_opt
# Execução exploratória (sem seed, resultados variam)
uv run mega_monte_carlo_optimizer.py --n-candidates 2000 --shortlist 100 --draws 60000 --out-prefix resultados/mega_opt
# Lotofacil
# Execução padrão (rápida / reprodutível)
uv run lotofacil_monte_carlo_optimizer.py --n-candidates 200 --shortlist 40 --draws 5000 --seed 2025 --out-prefix resultados/lf_fast
# Execução mais robusta (mais estável, mais lenta)
uv run lotofacil_monte_carlo_optimizer.py --n-candidates 2000 --shortlist 120 --draws 60000 --seed 2025 --out-prefix resultados/lf_opt
# Execução exploratória (sem seed, resultados variam)
uv run lotofacil_monte_carlo_optimizer.py --n-candidates 2000 --shortlist 120 --draws 60000 --out-prefix resultados/lf_opt| Parâmetro | Descrição | Exemplo |
|---|---|---|
--n-candidates |
Número de conjuntos iniciais a gerar | 1400 |
--shortlist |
Quantos conjuntos passam para a simulação Monte Carlo | 80 |
--draws |
Quantidade de sorteios simulados | 40000 |
--seed |
Semente para reprodutibilidade | 2025 |
--out-prefix |
Caminho/prefixo dos arquivos CSV gerados | resultados/mega_opt |
<prefix>_best_set.csv→ Melhor conjunto de 7 jogos otimizados<prefix>_topK_metrics.csv→ Ranking dos melhores conjuntos com métricas de eficiência
O algoritmo não prevê resultados; ele gera conjuntos mais eficientes ao distribuir as dezenas de forma estatisticamente equilibrada, reduzindo sobreposição e maximizando a cobertura do espaço amostral.
-
Gera candidatos (7 jogos de 6 dezenas) favorecendo:
- Baixa sobreposição entre jogos (distância mínima alta)
- Diversidade de décadas (1–10, …, 51–60) e finais (0–9)
- Paridade equilibrada (3 pares e 3 ímpares por jogo)
-
Simula sorteios (Monte Carlo) para cada conjunto candidato e estima:
As simulações geram milhares de sorteios aleatórios e comparam cada jogo do conjunto com os resultados. Assim, o algoritmo estima a probabilidade empírica de cada faixa de premiação.
- Seleciona o melhor conjunto priorizando:
- Maior
- Depois maior
- Maior diversidade (mais dezenas únicas)
- E finalmente maior
- Probabilidade combinatória básica
- Expectativas por sorteio (estimadas por Monte Carlo)
- Seleção do conjunto ideal
Consulte a documentação
- O algoritmo não prediz resultados: ele otimiza a dispersão e cobertura combinatória das apostas.
- O foco é aumentar a eficiência (probabilidade de pelo menos uma Quadra ou Quina) e evitar sobreposições entre jogos.
- A probabilidade de Sena permanece extremamente baixa, conforme a natureza do jogo.
| Métrica | Significado |
|---|---|
| P(\ge Quadra) | Probabilidade de ao menos uma Quadra no conjunto |
| P(\ge Quina) | Probabilidade de ao menos uma Quina |
| P(Sena) | Probabilidade de ao menos uma Sena |
| E[Quadras] | Valor esperado de Quadras por sorteio |
| unique_numbers | Quantidade de dezenas distintas entre os 7 jogos |
| min_pairwise_distance | Menor distância entre dois jogos (6 - interseção) |
Essas métricas permitem comparar conjuntos de jogos de maneira quantitativa, garantindo uma abordagem matematicamente consistente para otimização de apostas.
Contribuições são bem-vindas! Se você quiser sugerir melhorias ou adicionar novo conteúdo:
- Faça um fork do repositório
- Crie uma nova branch
- Envie um pull request
- Abra uma issue issue para discussões
Esse projeto está sob a licença MIT. Para mais detalhes acesse LICENSE.
Nota: Este repositório é destinado apenas para fins educacionais e de pesquisa.
Made with ☕ and ♥ by Daniel Nunes 👋