Jump to content

Conferência retorno financeiro de uma matriz (esboço)


BigMax

Recommended Posts

Por favor, quem entende de programação em Python me ajude a entender se realmente está comparando corretamente o conjunto de 4 linhas com todas as possibilidades de C 21,15  e gerando o relatório corretamente de lucro, empate ou prejuízo.
Faço no Excel dá 4% de empate e restante lucro. Nesse script tudo lucro.

 

import itertools

# Defina as linhas fornecidas
linhas = [
    [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15],
    [1, 2, 3, 4, 5, 6, 7, 8, 9, 16, 17, 18, 19, 20, 21],
    [1, 2, 3, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21],
    [4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 16, 17, 18, 19, 20]
]

# Defina os valores para coincidências
valores = {
    11: 6.00,
    12: 12.00,
    13: 18.00,
    14: 6.00,
    15: 6.00
}

# Gere todas as combinações C(21, 15)
todas_combinacoes = list(itertools.combinations(range(1, 22), 15))

# Inicialize as contagens
lucro = 0
prejuizo = 0

# Abra o arquivo relatório.txt para escrita
with open("relatorio.txt", "w") as relatorio:
    for combinacao in todas_combinacoes:
        # Verifique quantos números da combinação estão em cada linha
        coincidencias = [sum(1 for num in combinacao if num in linha) for linha in linhas]

        # Calcule o valor ganho com base nas coincidências
        ganho = 0
        for coincidencia in coincidencias:
            if coincidencia in valores:
                ganho += valores[coincidencia]

        # Atualize as contagens
        if ganho == 0:
            prejuizo += 1
        else:
            lucro += 1

    # Escreva o resultado no arquivo de relatório
    relatorio.write("\nResumo:\n")
    relatorio.write(f"Lucro em {lucro} combinações\n")
    relatorio.write(f"Prejuízo em {prejuizo} combinações\n")
 

Edited by BigMax
mudança título
  • Like 2
Link to comment
Share on other sites

Teria que apresentar um relatório assim:
Prejuizo em: 0/54264 = 0.0%
Nao prejuizo em: 9125/54264 = 16.81593690107622%
Lucro em: 45139/54264 = 83.18406309892379%
Mas não consigo, através de orientação chatgpt fazer a alteração.

 

  • Like 1
Link to comment
Share on other sites

9 hours ago, BigMax said:

valores = {
    11: 6.00,
    12: 12.00,
    13: 18.00,
    14: 6.00,
    15: 6.00
}

        if ganho == 0:
            prejuizo += 1
        else:
            lucro += 1

 

Eu não domino nenhuma linguagem de programação, muito menos Python que é dinamicamente tipada, mas estranhei as partes que destaquei em vermelho.

 

  • Like 1
Link to comment
Share on other sites

10 horas atrás, BigMax disse:

Por favor, quem entende de programação em Python me ajude a entender se realmente está comparando corretamente o conjunto de 4 linhas com todas as possibilidades de C 21,15  e gerando o relatório corretamente de lucro, empate ou prejuízo.
Faço no Excel dá 4% de empate e restante lucro. Nesse script tudo lucro.

 

import itertools

# Defina as linhas fornecidas
linhas = [
    [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15],
    [1, 2, 3, 4, 5, 6, 7, 8, 9, 16, 17, 18, 19, 20, 21],
    [1, 2, 3, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21],
    [4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 16, 17, 18, 19, 20]
]

# Defina os valores para coincidências
valores = {
    11: 6.00,
    12: 12.00,
    13: 18.00,
    14: 6.00,
    15: 6.00
}

# Gere todas as combinações C(21, 15)
todas_combinacoes = list(itertools.combinations(range(1, 22), 15))

# Inicialize as contagens
lucro = 0
prejuizo = 0

# Abra o arquivo relatório.txt para escrita
with open("relatorio.txt", "w") as relatorio:
    for combinacao in todas_combinacoes:
        # Verifique quantos números da combinação estão em cada linha
        coincidencias = [sum(1 for num in combinacao if num in linha) for linha in linhas]

        # Calcule o valor ganho com base nas coincidências
        ganho = 0
        for coincidencia in coincidencias:
            if coincidencia in valores:
                ganho += valores[coincidencia]

        # Atualize as contagens
        if ganho == 0:
            prejuizo += 1
        else:
            lucro += 1

    # Escreva o resultado no arquivo de relatório
    relatorio.write("\nResumo:\n")
    relatorio.write(f"Lucro em {lucro} combinações\n")
    relatorio.write(f"Prejuízo em {prejuizo} combinações\n")
 

Bom dia grande BigMax, tente uma ajuda com Shurato e ou Friaça!!!

Link to comment
Share on other sites

1 hora atrás, OdeioParasita disse:

 

mas estranhei as partes que destaquei em vermelho.

 

É para não inflar muito a receita. kkkk Na verdade não sabia o valor real e coloquei qualquer um.
E faltou o custo do jogo no valor inicial que deveria ser negativo em R$12,00. 
 

  • Like 1
Link to comment
Share on other sites

import itertools

# Defina as linhas fornecidas
linhas = [
    [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15],
    [1, 2, 3, 4, 5, 6, 7, 8, 9, 16, 17, 18, 19, 20, 21],
    [1, 2, 3, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21],
    [4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 16, 17, 18, 19, 20]
]

# Defina os valores para coincidências
valores = {
    11: 6.00,
    12: 12.00,
    13: 18.00,
    14: 6.00,
    15: 6.00
}

# Gere todas as combinações C(21, 15)
todas_combinacoes = list(itertools.combinations(range(1, 22), 15))

# Inicialize as contagens
lucro = 0
prejuizo = 0
ganho = 0

# Abra o arquivo relatório.txt para escrita
with open("relatorio.txt", "w") as relatorio:
    for combinacao in todas_combinacoes:
        # Verifique quantos números da combinação estão em cada linha
        coincidencias = [sum(1 for num in combinacao if num in linha) for linha in linhas]

        # Calcule o valor ganho com base nas coincidências
        for coincidencia in coincidencias:
            if coincidencia in list(valores.keys()):
                ganho += valores[coincidencia]
                lucro += 1
            else:
                prejuizo += 1
   

    # Escreva o resultado no arquivo de relatório
    relatorio.write("\nResumo:\n")
    relatorio.write(f"Ganho: {ganho}\n")
    relatorio.write(f"Lucro em {lucro} combinações\n")
    relatorio.write(f"Prejuízo em {prejuizo} combinações\n")

 

Faz sentido isso aqui, o problema é que a condicao de if ganho == 0: estava fora do loop das  coincidencias, e quando existia uma coincidencia com ganho a variavel ganho nunca era zero. veja se os resultados fazem sentido com esse codigo

  • Like 2
Link to comment
Share on other sites

23 minutos atrás, L981231 disse:

 

Faz sentido isso aqui, o problema é que a condicao de if ganho == 0: estava fora do loop das  coincidencias, e quando existia uma coincidencia com ganho a variavel ganho nunca era zero. veja se os resultados fazem sentido com esse codigo

Conforme os valores lançados ( premiação) dá um resultado diferente.
Não sei se deveria colocar todos os valores de premiação em R$6,00 ou outros valores. 
O script que sugeriu gerou:
 

Resumo:
Ganho: 1043784.0
Lucro em 124964 combinações
Prejuízo em 92092 combinações

 

O que pressuponho correto seria :
Prejuízo em: 0/54264 = 0.0%
Não prejuízo em: 9125/54264 = 16.81593690107622%
Lucro em: 45139/54264 = 83.18406309892379%
////////////////////////////////
Obrigado pela atenção, 
Observo que não entendo nada de programação além de umas coisinhas do Basic de fins anos 80 e desde então só focado em loteria. 
////////////////////////////////
E o script funcionando é útil para muita gente. E quem não sabe, toma gosto e aprende junto.
Novamente obrigado.

Link to comment
Share on other sites

import itertools

# Defina as linhas fornecidas
linhas = [
    [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15],
    [1, 2, 3, 4, 5, 6, 7, 8, 9, 16, 17, 18, 19, 20, 21],
    [1, 2, 3, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21],
    [4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 16, 17, 18, 19, 20]
]

# Defina os valores para coincidências
valores = {
    11: 6.00,
    12: 12.00,
    13: 18.00,
    14: 6.00,
    15: 6.00
}

# Gere todas as combinações C(21, 15)
todas_combinacoes = list(itertools.combinations(range(1, 22), 15))

# O que pressuponho correto seria :
# Prejuízo em: 0/54264 = 0.0%
# Não prejuízo em: 9125/54264 = 16.81593690107622%
# Lucro em: 45139/54264 = 83.18406309892379%

# Inicialize as contagens
lucro = 0
prejuizo = 0
empates = 0
# Abra o arquivo relatório.txt para escrita
with open("relatorio.txt", "w") as relatorio:
    for combinacao in todas_combinacoes:
        coincidencias = [sum(1 for num in combinacao if num in linha) for linha in linhas]
        ganho = 0
        for coincidencia in coincidencias:
            if coincidencia in valores:
                ganho += valores[coincidencia]
        # Assumindo que o valor de cada aposta é 3, caso o ganho das 4 apostas seja 12, consideramos um empate
        if ganho == 12:
            empates += 1

        if ganho == 0:
            prejuizo += 1
        else:
            lucro += 1

    # Escreva o resultado no arquivo de relatório
    relatorio.write("\nResumo:\n")
    relatorio.write(f"Lucro em {lucro-empates} combinações\n")
    relatorio.write(f"Prejuízo em {prejuizo} combinações\n")
    relatorio.write(f"Empates em {empates} combinações\n")

 

@BigMax Essa versao retorna uma diferenca de 150, mas acredito que a logica esta correta, talvez os valores de cada premiacao precisam ser atualizados. Estava faltando vc calcular o empate, nesse caso estou considerando cada aposta por R$ 3,00. Caso o ganho para a combinacao seja 12, consideramos um empate. Dai o Lucro é lucro - empate. Espero que tenha ajudado.

  • Thanks 1
Link to comment
Share on other sites

42 minutos atrás, L981231 disse:
import itertools

# Defina as linhas fornecidas
linhas = [
    [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15],
    [1, 2, 3, 4, 5, 6, 7, 8, 9, 16, 17, 18, 19, 20, 21],
    [1, 2, 3, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21],
    [4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 16, 17, 18, 19, 20]
]

# Defina os valores para coincidências
valores = {
    11: 6.00,
    12: 12.00,
    13: 18.00,
    14: 6.00,
    15: 6.00
}

# Gere todas as combinações C(21, 15)
todas_combinacoes = list(itertools.combinations(range(1, 22), 15))

# O que pressuponho correto seria :
# Prejuízo em: 0/54264 = 0.0%
# Não prejuízo em: 9125/54264 = 16.81593690107622%
# Lucro em: 45139/54264 = 83.18406309892379%

# Inicialize as contagens
lucro = 0
prejuizo = 0
empates = 0
# Abra o arquivo relatório.txt para escrita
with open("relatorio.txt", "w") as relatorio:
    for combinacao in todas_combinacoes:
        coincidencias = [sum(1 for num in combinacao if num in linha) for linha in linhas]
        ganho = 0
        for coincidencia in coincidencias:
            if coincidencia in valores:
                ganho += valores[coincidencia]
        # Assumindo que o valor de cada aposta é 3, caso o ganho das 4 apostas seja 12, consideramos um empate
        if ganho == 12:
            empates += 1

        if ganho == 0:
            prejuizo += 1
        else:
            lucro += 1

    # Escreva o resultado no arquivo de relatório
    relatorio.write("\nResumo:\n")
    relatorio.write(f"Lucro em {lucro-empates} combinações\n")
    relatorio.write(f"Prejuízo em {prejuizo} combinações\n")
    relatorio.write(f"Empates em {empates} combinações\n")

 

@BigMax Essa versao retorna uma diferenca de 150, mas acredito que a logica esta correta, talvez os valores de cada premiacao precisam ser atualizados. Estava faltando vc calcular o empate, nesse caso estou considerando cada aposta por R$ 3,00. Caso o ganho para a combinacao seja 12, consideramos um empate. Dai o Lucro é lucro - empate. Espero que tenha ajudado.

Muito obrigado!
Espero que seja útil também para outros.
Boa sorte em seus jogos.

 

  • Like 1
Link to comment
Share on other sites

Citar

Legal!
Já rodei:
Resumo:
Lucro em 44989 combinações
Prejuízo em 0 combinações
Empates em 9275 combinações
Entendi a diferença de 150.
O correto é:
 

Prejuízo em: 0/54264 = 0.0%
Não prejuízo em: 9125/54264 = 16.81593690107622%
Lucro em: 45139/54264 = 83.18406309892377%

01 02 03 04 05 06 07 08 09 10 11 12 13 14 15
 01 02 03 04 05 06 07 08 09 16 17 18 19 20 21
 01 02 03 10 11 12 13 14 15 16 17 18 19 20 21
 04 05 06 07 08 10 11 12 13 14 16 17 18 19 20

 

Edited by BigMax
acrescentar informação %
Link to comment
Share on other sites

  • BigMax changed the title to script Python (esboço)
  • BigMax changed the title to Conferência retorno financeiro de uma matriz (esboço)

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...