Souto Posted February 18, 2020 Share Posted February 18, 2020 Deixo aqui minha contribuição para o forum csn para combinatorio . Na aba desenvolvedor: inserir novo modulo colar a função em a1 colocar numeros de 1 a 3.268.760 clicar em a2 e selecionar de b2:p2>escrever csnparacombinacao=a1>apertar ctrl+shift+enter Function CSNparaCOMBINACAO(seq As Long) As Variant Dim CSN, N, k As Integer Dim combinacao(0 To 14) As Variant Dim TXT As String CSN = seq N = 25 k = 15 LIMITE_INFERIOR = 0 R = 0 For i = 0 To (k - 1) combinacao(i) = i Next i For i = 0 To k - 2 'Debug.Print i 'LIMITE_INFERIOR = 0 'R = 0 If combinacao(i) > 0 Then combinacao(i) = combinacao(i - 1) End If Do While LIMITE_INFERIOR < CSN 'Debug.Print combinacao(i) combinacao(i) = combinacao(i) + 1 R = Application.WorksheetFunction.Combin(N - combinacao(i), (k - 1) - i) LIMITE_INFERIOR = LIMITE_INFERIOR + R 'Debug.Print r ' Debug.Print limite_inferior Loop LIMITE_INFERIOR = LIMITE_INFERIOR - R Next i combinacao(k - 1) = combinacao(k - 2) + CSN - LIMITE_INFERIOR ' TXT = combinacao(0) 'For i = 1 To 14 'TXT = TXT & " " & combinacao(i) 'Next i 'CSNparaCOMBINACAO = TXT CSNparaCOMBINACAO = combinacao End Function 3 1 Quote Link to comment Share on other sites More sharing options...
PARAFUSO Posted February 18, 2020 Share Posted February 18, 2020 tem pra loto mania mas não pros sorteios de 20 mas pra linhas de 50 ? Quote Link to comment Share on other sites More sharing options...
rockcavera Posted February 18, 2020 Share Posted February 18, 2020 2 horas atrás, Souto disse: Deixo aqui minha contribuição para o forum csn para combinatorio . Na aba desenvolvedor: inserir novo modulo colar a função em a1 colocar numeros de 1 a 3.268.760 clicar em a2 e selecionar de b2:p2>escrever csnparacombinacao=a1>apertar ctrl+shift+enter Function CSNparaCOMBINACAO(seq As Long) As Variant Dim CSN, N, k As Integer Dim combinacao(0 To 14) As Variant Dim TXT As String CSN = seq N = 25 k = 15 LIMITE_INFERIOR = 0 R = 0 For i = 0 To (k - 1) combinacao(i) = i Next i For i = 0 To k - 2 'Debug.Print i 'LIMITE_INFERIOR = 0 'R = 0 If combinacao(i) > 0 Then combinacao(i) = combinacao(i - 1) End If Do While LIMITE_INFERIOR < CSN 'Debug.Print combinacao(i) combinacao(i) = combinacao(i) + 1 R = Application.WorksheetFunction.Combin(N - combinacao(i), (k - 1) - i) LIMITE_INFERIOR = LIMITE_INFERIOR + R 'Debug.Print r ' Debug.Print limite_inferior Loop LIMITE_INFERIOR = LIMITE_INFERIOR - R Next i combinacao(k - 1) = combinacao(k - 2) + CSN - LIMITE_INFERIOR ' TXT = combinacao(0) 'For i = 1 To 14 'TXT = TXT & " " & combinacao(i) 'Next i 'CSNparaCOMBINACAO = TXT CSNparaCOMBINACAO = combinacao End Function Deveria ter colocado o código dentro de uma caixa de código. Junto com esta postagem tem uma imagem mostrando onde fica na caixa de edição de postagem para por um código. Depois de colocar dentro de uma caixa de código, o código ficará mais ou menos assim: postagem com código Por quê postar um código dentro de uma caixa de código? Simples. Existe alguns caracteres que são tratados como entidades HTML e não são exibidos corretamente quando não estão em uma caixa de código. Além disso, há algumas linguagens de programação que a indentação errada pode custar a execução do código, como exemplo: python, nim, etc. e um código fora da caixa de código perde a indentação. Portanto, sempre coloque um código dentro de uma caixa de código. Abraço! 2 1 Quote Link to comment Share on other sites More sharing options...
Souto Posted February 19, 2020 Author Share Posted February 19, 2020 RESPOSTA PARA, PARAFUSO, LOTOMANIA... ESPERO QUE TENHA ENTENDIDO... FONTE DO ALGORITMO 3W.DREAMsinCODE.COM; O algoritmo para calcular a combinação a partir do CSN é uma engenhosa obra prima de B. P. Buckles e M. Lyabanon, publicada em 1974. MODIFICADO POR SOUTO PARA RODAR NO EXCEL NA ABA DESENVOLVEDOR EXCEL> INSERIR NOVO MODULO >COPIAR E COLAR A FUNCTION ABAIXO IR PARA PLAN1 > A1=CSN DESEJADO (1 A COMBIN(100;50)) SELECIONAR AS PROXIMAS 50 COLUNAS E ESCREVER "=CSNparaCOMBINACAOlotomania=A1" + "CTRL+SHIFT+ENTER" <FORMULA MATRICIAL> Function CSNparaCOMBINACAOlotomania(seq As Long) As Variant Dim CSN As Long Dim N, k As Integer Dim combinacao(0 To 49) As Variant CSN = seq N = 100 k = 50 LIMITE_INFERIOR = 0 R = 0 For i = 0 To (k - 1) combinacao(i) = i Next i For i = 0 To k - 2 If combinacao(i) > 0 Then combinacao(i) = combinacao(i - 1) End If Do While LIMITE_INFERIOR < CSN combinacao(i) = combinacao(i) + 1 R = Application.WorksheetFunction.Combin(N - combinacao(i), (k - 1) - i) LIMITE_INFERIOR = LIMITE_INFERIOR + R Loop LIMITE_INFERIOR = LIMITE_INFERIOR - R Next i combinacao(k - 1) = combinacao(k - 2) + CSN - LIMITE_INFERIOR CSNparaCOMBINACAOlotomania = combinacao End Function 2 Quote Link to comment Share on other sites More sharing options...
Souto Posted February 19, 2020 Author Share Posted February 19, 2020 csn para combinatorio pode ser modificado para outras loterias ex: mega sena n=60 k=6 49=5 Att. Souto 1 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
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.