Skip to content

danielnunesdc/mega_monte_carlo_optimizer

Repository files navigation

Otimização de Apostas via Monte Carlo

Made by Daniel Nunes Project top programing language Project programing languages count Repository size

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.


🔧 Como executar o algoritmo

1. Requisitos

  • Python 3.12+ instalado
  • Bibliotecas: numpy, pandas
uv sync

2. Exemplos de execução:

# 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

3. Parâmetros principais

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

4. Saídas geradas

  • <prefix>_best_set.csv → Melhor conjunto de 7 jogos otimizados
  • <prefix>_topK_metrics.csv → Ranking dos melhores conjuntos com métricas de eficiência

5. Interpretação básica

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.


O que o algoritmo faz

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

  1. Seleciona o melhor conjunto priorizando:
    • Maior
    • Depois maior
    • Maior diversidade (mais dezenas únicas)
    • E finalmente maior

🧮 Fórmulas utilizadas

  • Probabilidade combinatória básica
  • Expectativas por sorteio (estimadas por Monte Carlo)
  • Seleção do conjunto ideal

Consulte a documentação


📊 Observações importantes

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

📈 Interpretação dos resultados

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.


🤝 Contribuindo

Contribuições são bem-vindas! Se você quiser sugerir melhorias ou adicionar novo conteúdo:

  1. Faça um fork do repositório
  2. Crie uma nova branch
  3. Envie um pull request
  4. Abra uma issue issue para discussões

🔄 Status do Projeto

GitHub Stars GitHub Forks GitHub Issues GitHub Pull Requests


Entre em contato

danielnunesdc



Licença

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 👋

Releases

No releases published

Packages

 
 
 

Contributors

Languages