Marcelofarias

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

Share this post


Link to post
Share on other sites
Posted (edited)
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

Share this post


Link to post
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

Share this post


Link to post
Share on other sites

@DixieJoe tbm não achei isso de csn interessante não , talvez em deslocamento  de dezenas , mas teria que ser feito um estudo

Share this post


Link to post
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.

Share this post


Link to post
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?

Share this post


Link to post
Share on other sites

@Gatsby 

 

Isso mesmo,

 

Quina, vetor de um resultado tem 5 dezenas

Megasena tem 6 dezenas, e assim por diante.

 

Esse vetor é usado para passar o resultado para a fórmula de cálculo

  • Thanks 1

Share this post


Link to post
Share on other sites

@Marcelofarias 

 

Gostei muito do seu video.

 

Concordo que, numa parte dos sorteios, você consegue fazer uma previsão que reduz bastante a quantidade de jogos.

 

Sua planilha é show de bola. Parabéns!

 

Está disponível ou é só para seu uso?

 

 

Share this post


Link to post
Share on other sites

palpite em csn para a mega

33711739

38718125

43300241

47487347

22317488

28958759

34990954

40459599

45407619

49875439

41629571

46782698

43254635

48467095

47862428

48910280

24640389

35049654

50030851

Share this post


Link to post
Share on other sites

@Omesmo tem como saber o comprtamento  do jogos com grafico como o amigo la em  cima fez no video vc consegue percebe que  vem saindo  

 

Share this post


Link to post
Share on other sites
Posted (edited)

@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

Share this post


Link to post
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

Share this post


Link to post
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

Share this post


Link to post
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

Share this post


Link to post
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
  • ....

 

Share this post


Link to post
Share on other sites

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

 

Share this post


Link to post
Share on other sites
11 minutos atrás, Marcelofarias disse:

@dois  será que não da para fazer uma linha de 15  com este 4 concurso   ou mais jogos desdobrando 

 

Por favor,

Pode explicar com mais detalhes para que eu entenda ?

 

Share this post


Link to post
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.

 

Share this post


Link to post
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

Share this post


Link to post
Share on other sites

@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

Share this post


Link to post
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.

 

Share this post


Link to post
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.