Jump to content

Algoritmo para Loto-Aplicações – De CSN para combinações e de combinações para CSN


Recommended Posts

Em primeiro lugar, o que é o CSN? O CSN é o Número Sequencial Combinatório (Combinatorial Sequence Number) de uma dada combinação, quando estas se encontram ordenadas lexicograficamente, isto é, tendo como exemplo C(50,5), da [1, 2, 3, 4, 5] até à [46, 47, 48, 49, 50]. Neste caso, os CSN’s seriam o 1 e o 2.118.760.

Uma forma de calcular os CSN’s, e vice-versa, seria simplesmente construir todo o desdobramento até ao CSN pretendido, ou até à chave pretendida. Don’t. É estúpido, é um desperdício de ciclos de processamento e é péssima programação. Sobretudo, se já alguém pensou no assunto e se os algoritmos são do domínio público. Mesmo que não saibam, pesquisem antes de cometer uma barbaridade deste tamanho.

Vamos então aos ditos…

 

 

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.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
função csnParaCombinação(csn, n, k)
    seja limite_inferior = 0;
    seja r = 0;
    seja combinação = [0...k-1]
  
    para cada i, sendo i = 0, enquanto i < k - 1, incrementar i
        combinação = 0;
        se(i != 0) combinação = combinação[i - 1];
 
        fazer
            combinação =  combinação + 1;
            r = númeroDeCombinações(n - combinação, (k - 1) - i); // lembram-se desta função?
            limite_inferior = limite_inferior + r;
        enquanto (limite_inferior < csn);
  
        limite_inferior = limite_inferior - r;
    fim de para;
  
    combinação[k - 1] = combinação[k - 2] + csn - limite_inferior;
  
    devolve combinação;
fim de função;

Para começar, quero-vos dizer que parece bem mais complicado do que na realidade é. Os comentários na minha implementação em C# poderão ajudar-vos a perceber melhor.

Depois, reparem como a última posição da combinação é tratada à parte, duma maneira perfeitamente elegante, usando os valores do CSN pedido e do último limite inferior calculado.

Mas passemos, então, à manobra inversa, calcular o CSN a partir da combinação. O seguinte algoritmo não tem, que eu saiba, autores oficiais. A sua simplicidade decorre de ser um negativo quase perfeito da função anterior.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
função combinaçãoParaCsn(combinação, n)
    seja k = combinação.tamanho();
    seja limite_inferior = 0;
    seja r= 0;
  
    para cada i, sendo i = 1, enquanto i <= k, incrementar i
        r = n - combinação[k - i];
        se (r >= i)
            limite_inferior = limite_inferior + númeroDeCombinações(r, i);
        fim de se;
    fim de para;
  
    devolve númeroDeCombinações(n, k) - limite_inferior;
fim de função;

Podem ver, na segunda instrução do para, que a combinação está a ser percorrida de trás para a frente, e o limite inferior está a ser contado como o que falta até ao fim, sendo finalmente subtraído ao número de combinações total para nos dar o CSN.

O código fonte das minhas implementações em C# fazem parte da classe CombTools, disponível no projecto Combinatorica.

 

ACHEI INTERESSANTE E POSTEI AQUI  FONTES: DREAMSICODE.

  • Like 1
Link to comment
Share on other sites

2 horas atrás, Marcelofarias disse:

Em primeiro lugar, o que é o CSN? O CSN é o Número Sequencial Combinatório (Combinatorial Sequence Number) de uma dada combinação, quando estas se encontram ordenadas lexicograficamente, isto é, tendo como exemplo C(50,5), da [1, 2, 3, 4, 5] até à [46, 47, 48, 49, 50]. Neste caso, os CSN’s seriam o 1 e o 2.118.760.

Uma forma de calcular os CSN’s, e vice-versa, seria simplesmente construir todo o desdobramento até ao CSN pretendido, ou até à chave pretendida. Don’t. É estúpido, é um desperdício de ciclos de processamento e é péssima programação. Sobretudo, se já alguém pensou no assunto e se os algoritmos são do domínio público. Mesmo que não saibam, pesquisem antes de cometer uma barbaridade deste tamanho.

Vamos então aos ditos…

 

 

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.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
função csnParaCombinação(csn, n, k)
    seja limite_inferior = 0;
    seja r = 0;
    seja combinação = [0...k-1]
  
    para cada i, sendo i = 0, enquanto i < k - 1, incrementar i
        combinação = 0;
        se(i != 0) combinação = combinação[i - 1];
 
        fazer
            combinação =  combinação + 1;
            r = númeroDeCombinações(n - combinação, (k - 1) - i); // lembram-se desta função?
            limite_inferior = limite_inferior + r;
        enquanto (limite_inferior < csn);
  
        limite_inferior = limite_inferior - r;
    fim de para;
  
    combinação[k - 1] = combinação[k - 2] + csn - limite_inferior;
  
    devolve combinação;
fim de função;

Para começar, quero-vos dizer que parece bem mais complicado do que na realidade é. Os comentários na minha implementação em C# poderão ajudar-vos a perceber melhor.

Depois, reparem como a última posição da combinação é tratada à parte, duma maneira perfeitamente elegante, usando os valores do CSN pedido e do último limite inferior calculado.

Mas passemos, então, à manobra inversa, calcular o CSN a partir da combinação. O seguinte algoritmo não tem, que eu saiba, autores oficiais. A sua simplicidade decorre de ser um negativo quase perfeito da função anterior.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
função combinaçãoParaCsn(combinação, n)
    seja k = combinação.tamanho();
    seja limite_inferior = 0;
    seja r= 0;
  
    para cada i, sendo i = 1, enquanto i <= k, incrementar i
        r = n - combinação[k - i];
        se (r >= i)
            limite_inferior = limite_inferior + númeroDeCombinações(r, i);
        fim de se;
    fim de para;
  
    devolve númeroDeCombinações(n, k) - limite_inferior;
fim de função;

Podem ver, na segunda instrução do para, que a combinação está a ser percorrida de trás para a frente, e o limite inferior está a ser contado como o que falta até ao fim, sendo finalmente subtraído ao número de combinações total para nos dar o CSN.

O código fonte das minhas implementações em C# fazem parte da classe CombTools, disponível no projecto Combinatorica.

 

ACHEI INTERESSANTE E POSTEI AQUI  FONTES: DREAMSICODE.

Eu já havia visto esse site. Estava tentando entender como se faz a conta para se obter, através de uma combinação, o respectivo CSN. Vi uma fórmula matemática na Wikipédia, com somatório (letra grega "sigma" maiúscula), mas não consegui entender a letra "a" que aparece na fórmula, que está descrita como um "vetor com a combinação desejada". O site da Wikipédia com a fórmula matemática é este aqui:

 

https://pt.m.wikipedia.org/wiki/Número_sequencial_combinatório

 

Talvez o @BigMax ,o @iziplay ou o @rockcavera saibam o que seria esse "vetor" (letra "a") na fórmula.

 

Edited by Gatsby
Link to comment
Share on other sites

@Gatsby 

 

Vetor a é o seu conjunto com N dezenas.

 

Por exemplo, na Lotofacil, seu vetor a vai ser o conjunto de 15 dezenas para o qual deseja calcular o CSN.

 

Vetor é um array simples. Uma matriz simples.

 

Espero ter ajudado alguma coisa.

 

---------------

 

Curiosidade: como imagina usar o CSN? Ele acaba sendo tão dificil quanto o próprio conjunto. São 3,2 milhões de possibilidades.

Eu ainda não entendi como usar o CSN.

 

  • Thanks 1
Link to comment
Share on other sites

5 horas atrás, DixieJoe disse:

Curiosidade: como imagina usar o CSN? Ele acaba sendo tão dificil quanto o próprio conjunto. São 3,2 milhões de possibilidades.

Eu ainda não entendi como usar o CSN.

O CSN é apenas mais um dado que pode ser usado para verificar tendências da loteria... numa tentativa de ajudar a fazer previsões. Da mesma forma que se faz ao observar o atraso das dezenas, por exemplo. Eu acho até mais empolgante usar o CSN para realizar apostas do que só trabalhar com as dezenas propriamente ditas. De certa forma, o CSN é a "alma" da loteria... tudo o que pode acontecer está descrito lá. A questão é saber quando irá acontecer.

Link to comment
Share on other sites

5 horas atrás, DixieJoe disse:

@Gatsby 

 

Vetor a é o seu conjunto com N dezenas.

 

Por exemplo, na Lotofacil, seu vetor a vai ser o conjunto de 15 dezenas para o qual deseja calcular o CSN.

 

Vetor é um array simples. Uma matriz simples.

 

Espero ter ajudado alguma coisa.

Então para a Dupla Sena seria 50, para a Mega Sena seria 60 e para a Quina seria 80. É isso? O vetor seria o total de dezenas no volante?

Link to comment
Share on other sites

@Marcelofarias é pq já tenho tenho incorporado em minha planilha "conversor" por isso postei
mas não vejo vatagem em usar csn
veja que csn tem o mesmo numero de combinação sendo somente seu indice geral
preste atenção que o cara usou um grafico pelo csn mas de um csn  para o outro tem milhares de combinação no meio , nem para quem aposta muito isso serve, mas facil definir dezena por dezena

Edited by Omesmo
Link to comment
Share on other sites

@Marcelofarias nem precisa do grafico pelo proprio numero vc ve

csn                  
44210924   2257   18 21 30 31 34 51
1218920   2258   1 5 7 14 23 26
45984240   2259   20 27 41 54 56 58
36404078   2260   12 14 34 35 37 47
26618177   2261   7 23 26 27 29 51
24336016   2262   7 8 14 23 30 46
31659120   2263   9 24 33 43 49 57
5119523   2264   2 3 8 19 29 37
39971557   2265   14 20 23 39 46 50
33711739   2266   10 23 31 37 58 59

 

 

  • Like 1
Link to comment
Share on other sites

csn diferença concurso              
44210924   2257   18 21 30 31 34 51
1218920 -42992004 2258   1 5 7 14 23 26
45984240 44765320 2259   20 27 41 54 56 58
36404078 -9580162 2260   12 14 34 35 37 47
26618177 -9785901 2261   7 23 26 27 29 51
24336016 -2282161 2262   7 8 14 23 30 46
31659120 7323104 2263   9 24 33 43 49 57
5119523 -26539597 2264   2 3 8 19 29 37
39971557 34852034 2265   14 20 23 39 46 50
33711739 -6259818 2266   10 23 31 37 58 59

 

 

veja quantas conbinações existem entre um csn e outro , ão é só sabe se sobe ou desce não e mesmo assim essa parte não é tão facil

Link to comment
Share on other sites

4 horas atrás, Marcelofarias disse:

@Omesmo  podemos criar gráfico com os  10 ultimo concurso ver o comportamento  do csn.

 

4 horas atrás, Omesmo disse:
csn diferença concurso              
44210924   2257   18 21 30 31 34 51
1218920 -42992004 2258   1 5 7 14 23 26
45984240 44765320 2259   20 27 41 54 56 58
36404078 -9580162 2260   12 14 34 35 37 47
26618177 -9785901 2261   7 23 26 27 29 51
24336016 -2282161 2262   7 8 14 23 30 46
31659120 7323104 2263   9 24 33 43 49 57
5119523 -26539597 2264   2 3 8 19 29 37
39971557 34852034 2265   14 20 23 39 46 50
33711739 -6259818 2266   10 23 31 37 58 59

veja quantas conbinações existem entre um csn e outro , ão é só sabe se sobe ou desce não e mesmo assim essa parte não é tão facil

 

Tenho estudos em #ModoPause na LOTOFACIL e não consegui somente com o gráfico nenhum padrão favorável,

a maior vantagem do gráfico é facilitar através do recurso de visualização.

 

Este amostral de 10 mais recentes Concursos mostra que talvez seja favorável FILTRAR repetição de Dígito do CSN:

Dígitos_QTDE csn diferença concurso                  
5 44.210.924   2257 18 21 30 31 34 51   44210924   4 4 2 1 0 9 2 4
5 01.218.920 -42.992.004 2258 1 5 7 14 23 26   01218920   0 1 2 1 8 9 2 0
6 45.984.240 44.765.320 2259 20 27 41 54 56 58   45984240   4 5 9 8 4 2 4 0
6 36.404.078 -9.580.162 2260 12 14 34 35 37 47   36404078   3 6 4 0 4 0 7 8
5 26.618.177 -9.785.901 2261 7 23 26 27 29 51   26618177   2 6 6 1 8 1 7 7
6 24.336.016 -2.282.161 2262 7 8 14 23 30 46   24336016   2 4 3 3 6 0 1 6
7 31.659.120 7.323.104 2263 9 24 33 43 49 57   31659120   3 1 6 5 9 1 2 0
6 05.119.523 -26.539.597 2264 2 3 8 19 29 37   05119523   0 5 1 1 9 5 2 3
5 39.971.557 34.852.034 2265 14 20 23 39 46 50   39971557   3 9 9 7 1 5 5 7
4 33.711.739 -6.259.818 2266 10 23 31 37 58 59   33711739   3 3 7 1 1 7 3 9
Link to comment
Share on other sites

6 minutos atrás, dois disse:

repetição de Dígito do CSN

 

Há também outros FILTROS que talvez ajudem:

  • Fechamento por Zona/Setor
  • Duplas
  • Quadruplas
  • Posições
  • Soma(s)
  • Repetições do Concurso anterior
  • ....

 

Link to comment
Share on other sites

22 minutos atrás, Marcelofarias disse:

@dois  só uma observação os concursos anteriores com os anos e dia  03/06

 

1822=1815786  dia 03/06/2019
1370=2552302  dia 03/06/2016
1217=1564677  dia 03/06/2015
913= 2852085  dia 03/06/2013

 

este são  o mês que sai  dia 3  de junho.

 

 

Por favor, parece que os CSNs estão errados.

Nenhum destes CSNs retornam as Combinações/Resultados dos Concursos.

 

Link to comment
Share on other sites

A única coisa que vejo nesse tipo de estudo é um cálculo médio das baixas e altas onde poderia-se ver se tem algum 14 pontos no intervalo

Talvez encontrasse alguns de 15 mais raramente, mas devem ser muitos jogos ainda.

A partir da média 'pra cima e pra baixo' (desvio padrão) teria que ver se o intervalo é menor que 50 mil (quantidade de linhas de pra 1 jogo de 14 pontos).

Mas é só uma opinião pq não faço ideia de como fazer isso.

  • Like 1
Link to comment
Share on other sites

18 minutos atrás, Marcelofarias disse:

@dois estranho eu to usado a planilha do wata e mostra a sequencia  1822=1815786  dia 03/06/2019=01 04 06 09 12 13 14 16 17 18 19 20 21 24 25

 

Desculpe, imaginei que você também se referia a MEGASENA :D:D:D:D:D:D

Quanto a LOTOFACIL, infelizmente não tenho como tentar nenhuma sugestão.

 

Link to comment
Share on other sites

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