Pessoal, bom dia!
Se alguém puder me ajudar com minha dúvida, ficarei grato. Após várias aulas, resolvi criar um "programa" próprio para testar o que os apostadores de loterias chamam de "Fechamento combinatório".
Para entender, vamos usar um exemplo da Mega Sena: Se eu escolher 07 das 60 dezenas disponíveis, poderei fazer 7 combinações possíveis agrupando de 6 em 6 dezenas. Até aí tudo bem.
Então suponhamos que eu jogo essas 7 combinações e consigo acertar 4 daqueles 7 números que escolhi para combiná-los - nesse caso, existe 100% de certeza que ao menos 03 das minhas combinações darão quadra (conferir tabela de probabilidades das loterias).
Pois bem, criei um script para testar se isso é verdadeiro, sendo que o output do script é printar na tela, primeiro, se realmente alguma das minhas combinações deu quadra (True ou False) e ao lado eu printo quantas dezenas foram acertadas em cada uma das combinações (nesse exemplo, 7 combinações possíveis). Se rodar o script abaixo, ele funciona.
Minha dúvida: como colocar esse 'output' num DATAFRAME?
Obs: ainda sou iniciante e relevem se meu script não está muito elegante ou com excesso de comentários. Tentei ser claro.
Grato se puderem me ajudar!
import numpy as np
import random
import pandas as pd
from itertools import combinations
num_aposta = list(range(1,8))
agrupamento = 6
cont = 0
comb = []
# Gerando as combinações da variável num_aposta
for combination in combinations(num_aposta, agrupamento):
np.array(comb.append(combination))
# Uso While para definir quantos testes realizarei variando o resultado da loteria.
while cont < 5:
cont +=1
num_in = list(range(1,8))
sorteados_in = []
num_out = list(range(8,61))
sorteados_out = []
# dos 7 números que escolhi para combiná-los, sempre vou acertar 4 (pois quero testar a quadra);
for i in range(4):
num_in_sorteado = random.choice(num_in)
sorteados_in.append(num_in_sorteado)
num_in.remove(num_in_sorteado)
# 2 dezenas eu nunca acerto
for i in range(2):
num_out_sorteado = random.choice(num_out)
sorteados_out.append(num_out_sorteado)
num_out.remove(num_out_sorteado)
# Criei o resultado concatenando as 06 dezenas acima.
result = sorteados_in + sorteados_out
# Comparando as dezenas das minhas combinações com o resultado da loteria gerado.
lista = []
for bet in comb:
for dezena in bet:
lista.append(dezena in result)
lista = np.array(lista).reshape(len(comb),agrupamento)
df = pd.DataFrame()
# Verificando quantas combinações deram quadra em cada teste.
verify = []
confirm = []
for j in lista:
verify.append(sum(j))
# Se ao menos uma das combinações acerta a quadra, resultado de 'confirm' é True
confirm.append(4 in verify)
print(confirm, verify)