Edgard Rocha Posted July 23, 2014 Share Posted July 23, 2014 PARES ANTES-DEPOISO segundo método é contar quantas vezes cada dezena foi sorteada depois da anterior, isto é, contar os pares constituídos de atual/seguinte, em cada sorteio, exceto claro, a ultima dezena que não tem seguimento. Tomando por exemplo a Quina, computar em cada sorteio: 1ª/2ª, 2ª/3ª, 3ª/4ª e 4ª/5ª. Dá para notar que é preciso um arquivo por ordem de sorteio.Ao final, iniciar a aposta pelo par que mais saiu, seguido pelo par iniciado pela 2ª dezena do anterior, e assim ir unindo os pares como num dominó. Mas pode acontecer que, em um novo par acrescentado à seqüência, se repita uma dezena que já está na seqüencia – nesse caso, pegar o próximo para que inicie pela mesma dezena anterior. ' OBS.1: jogo estudado - Quina' OBS.2: este exemplo dá uma facilidade adicional: pode-se indicar na 9ª coluna ("I") o 1º sorteio a partir do qual será feita a contagem (os anteriores são ignorados); o valor default é 1 Type tPar d1 As Integer d2 As Integer cnt As IntegerEnd TypeDim Par(1 To 80, 1 To 80) As tPar Sub Main()Dim x, prijogo, ultjogo As Integer ultjogo = ActiveCell.SpecialCells(xlLastCell).Row For x = 1 To 16 prijogo = Worksheets(1).Cells(x, 9).Value If IsEmpty(prijogo) Then prijogo = 1 Else prijogo = CInt(prijogo) End If Call CriaJogo(x, prijogo, ultjogo) Next xEnd Sub Sub CriaJogo(ByVal ppj As Integer, ByVal pj As Integer, uj As Integer)Dim x, y, z As IntegerDim p1, p2 As Integer ' iniciar arrayFor x = 1 To 80 For y = 1 To 80 With Par(x, y) .d1 = x .d2 = y .cnt = 0 End With Next yNext x ' computar pares de cada jogoFor x = pj To uj Call ContaPar(x, 1, 2) Call ContaPar(x, 2, 3) Call ContaPar(x, 3, 4) Call ContaPar(x, 4, 5)Next x ' ordenar array mantendo 1ª dez do parDim aux As tParFor x = 1 To 80 ' ordenar Par(x) For y = 1 To 79 For z = (y + 1) To 80 If Par(x, y).cnt < Par(x, z).cnt Then aux = Par(x, y) Par(x, y) = Par(x, z) Par(x, z) = aux End If Next z Next yNext x ' achar par mais ocorrido na estatísticaz = 1For x = 2 To 80 If Par(x, 1).cnt > Par(z, 1).cnt Then z = xNext x ' criar jogo iniciado pelo par da 1ª dezDim j(1 To 5) As Integerj(1) = Par(z, 1).d1j(2) = Par(z, 1).d2For x = 3 To 5 z = 1 Do j(x) = Par(j(x - 1), z).d2 If JaTem(j, x) Then ' tentar pares seguintes da mesma dezena z = z + 1 Else Exit Do End If LoopNext x For x = 1 To 5 Worksheets(1).Cells(ppj, x + 9).Value = j(x)Next x MsgBox “O.K.”End Sub Sub ContaPar(ByVal j As Integer, ByVal p1 As Integer, ByVal p2 As Integer)' contar +1 para o par passado ' recebe as pos, muda para as dezenas corresp p1 = Worksheets(1).Cells(j, p1).Value p2 = Worksheets(1).Cells(j, p2).Value Par(p1, p2).cnt = Par(p1, p2).cnt + 1End Sub Function JaTem(ByRef a() As Integer, ByVal u As Integer) As Boolean' comparar elems anters do array com o ultimo Dim x As Integer JaTem = False For x = 1 To (u - 1) If a(x) = a(u) Then JaTem = True Next xEnd Function Variante: PARES QUAISQUER – TERNOS QUAISQUERDesconsiderando a ordem de sorteio, contar todos os pares que possam ser formados com as dezenas de cada sorteio. Outra variante seria usar ternos ao invés de pares, mas não vale a pena trabalhar com grupos ainda maiores como quadras ou quinas, pois a freqüência de sorteio vai na razão inversa do tamanho. 1 Quote Link to comment Share on other sites More sharing options...
CRodrigues Posted July 23, 2014 Share Posted July 23, 2014 Acompanhando seus tópicos.Irão ajudar muita gente que trabalha com planilhas!Parabéns mesmo pela postagem! Quote Link to comment Share on other sites More sharing options...
Mauricio Pimenta Posted July 23, 2014 Share Posted July 23, 2014 valeu,vou analizar suas macros para adaptar na planilha Quote Link to comment Share on other sites More sharing options...
sorel Posted August 5, 2014 Share Posted August 5, 2014 rocha, dado uma lista de sorteios, um exemplo todos os os sorteios até agora da mega sena( brasil)em ordem crescente os sorteios, claro temos ao 6 posiçoes, a maro gera jogo aleatorios de no maximo até 3 dezenas dezenas dos sorteios anteriores, ou seja nao pode tter 4 dezenas de qualquer sorteio anteriorabraços Quote Link to comment Share on other sites More sharing options...
RobSmith Posted April 28, 2020 Share Posted April 28, 2020 Em 23/07/2014 em 07:47, Edgard Rocha disse: PARES ANTES-DEPOIS O segundo método é contar quantas vezes cada dezena foi sorteada depois da anterior, isto é, contar os pares constituídos de atual/seguinte, em cada sorteio, exceto claro, a ultima dezena que não tem seguimento. Tomando por exemplo a Quina, computar em cada sorteio: 1ª/2ª, 2ª/3ª, 3ª/4ª e 4ª/5ª. Dá para notar que é preciso um arquivo por ordem de sorteio. Ao final, iniciar a aposta pelo par que mais saiu, seguido pelo par iniciado pela 2ª dezena do anterior, e assim ir unindo os pares como num dominó. Mas pode acontecer que, em um novo par acrescentado à seqüência, se repita uma dezena que já está na seqüencia – nesse caso, pegar o próximo para que inicie pela mesma dezena anterior. ' OBS.1: jogo estudado - Quina ' OBS.2: este exemplo dá uma facilidade adicional: pode-se indicar na 9ª coluna ("I") o 1º sorteio a partir do qual será feita a contagem (os anteriores são ignorados); o valor default é 1 Type tPar d1 As Integer d2 As Integer cnt As Integer End Type Dim Par(1 To 80, 1 To 80) As tPar Sub Main() Dim x, prijogo, ultjogo As Integer ultjogo = ActiveCell.SpecialCells(xlLastCell).Row For x = 1 To 16 prijogo = Worksheets(1).Cells(x, 9).Value If IsEmpty(prijogo) Then prijogo = 1 Else prijogo = CInt(prijogo) End If Call CriaJogo(x, prijogo, ultjogo) Next x End Sub Sub CriaJogo(ByVal ppj As Integer, ByVal pj As Integer, uj As Integer) Dim x, y, z As Integer Dim p1, p2 As Integer ' iniciar array For x = 1 To 80 For y = 1 To 80 With Par(x, y) .d1 = x .d2 = y .cnt = 0 End With Next y Next x ' computar pares de cada jogo For x = pj To uj Call ContaPar(x, 1, 2) Call ContaPar(x, 2, 3) Call ContaPar(x, 3, 4) Call ContaPar(x, 4, 5) Next x ' ordenar array mantendo 1ª dez do par Dim aux As tPar For x = 1 To 80 ' ordenar Par(x) For y = 1 To 79 For z = (y + 1) To 80 If Par(x, y).cnt < Par(x, z).cnt Then aux = Par(x, y) Par(x, y) = Par(x, z) Par(x, z) = aux End If Next z Next y Next x ' achar par mais ocorrido na estatística z = 1 For x = 2 To 80 If Par(x, 1).cnt > Par(z, 1).cnt Then z = x Next x ' criar jogo iniciado pelo par da 1ª dez Dim j(1 To 5) As Integer j(1) = Par(z, 1).d1 j(2) = Par(z, 1).d2 For x = 3 To 5 z = 1 Do j(x) = Par(j(x - 1), z).d2 If JaTem(j, x) Then ' tentar pares seguintes da mesma dezena z = z + 1 Else Exit Do End If Loop Next x For x = 1 To 5 Worksheets(1).Cells(ppj, x + 9).Value = j(x) Next x MsgBox “O.K.” End Sub Sub ContaPar(ByVal j As Integer, ByVal p1 As Integer, ByVal p2 As Integer) ' contar +1 para o par passado ' recebe as pos, muda para as dezenas corresp p1 = Worksheets(1).Cells(j, p1).Value p2 = Worksheets(1).Cells(j, p2).Value Par(p1, p2).cnt = Par(p1, p2).cnt + 1 End Sub Function JaTem(ByRef a() As Integer, ByVal u As Integer) As Boolean ' comparar elems anters do array com o ultimo Dim x As Integer JaTem = False For x = 1 To (u - 1) If a(x) = a(u) Then JaTem = True Next x End Function Variante: PARES QUAISQUER – TERNOS QUAISQUER Desconsiderando a ordem de sorteio, contar todos os pares que possam ser formados com as dezenas de cada sorteio. Outra variante seria usar ternos ao invés de pares, mas não vale a pena trabalhar com grupos ainda maiores como quadras ou quinas, pois a freqüência de sorteio vai na razão inversa do tamanho. antigo Mas atual. 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.