Jump to content

Previsão para filtros da lotofacil?


suelsilva

Recommended Posts

@suelsilva 

 

Vamos lá!

 

1- Para filtros FIXOS e Variáveis (que são os perto de 1.000) eu coloquei dentro do programa com IFs.

A diferença é que a base de valores (Fixos e Variáveis) é criada ao iniciar o programa. Então estão disponíveis

durante a "vida" do programa.

 

2- Como a maioria dos filtros tem o mesmo tipo de análise, coloquei vários FOR (LOOPs contadores) de filtros que tem o mesmo processamento e dentro desses FOR usei o IF uma única vez.

 

3- Para Filtros do Tipo grupo (exemplo usado no Cologa) que usa grupos - como todos os resultados anteriores e que eu não quero 15 por exemplo, a rotina de Filtro tem o mesmo comportamento dos filtros anteriores. Só lembro que para cada novo Jogo gerado, ele precisa ser testado contra todos os resultados anteriores e só depois é feita a avaliação se aceita ou dependendo da condição inicial definida.

 

Espero ter ajudado.

 

A rotina de filtros é a mais lenta em qualquer programa de loterias.

 

Quando eu ganhar alguma coisa, vou contratar um excelente programador de Assembler para fazer uma rotina IN-LINE dentro do meu programa.

Até ganhar a primeira vez, vou "vivendo" com o que tenho. rsrsrsrs

 

  • Like 2
Link to comment
Share on other sites

@Sphgf 

 

Obrigado pela sua lucidez de sempre!

 

Suas idéias e sugestões são sempre ótimas e benvindas!

 

Essa sua proposta é para entender melhor e implementar. Faz tempo que quero implementar essa ideia do exemplo em que utilizou os valores para 10 filtros, CONTANDO a quantidade deles em cada avaliação.

 

Hoje, para gerar jogos, partindo sempre dos 3,2 milhões e aplicando 10 filtros com valores certeiros (Qte repetidas nos 10 sorteios anteriores, que você citou como exemplo), já temos um tempo aceitável. Menos de 5 segundos. Respondendo a uma pergunta sua, onde usei o concurso 1788 como exemplo e 10 sorteios anteriores cravando o acerto do valor CORRETO nesse sorteio (que foram: 11-7-9-11-7-10-9-8-8-9, respectivamente do ultimo para trás), sobrou um único jogo com 15 dezenas. E o prêmio de 15, CLARO, está lá.

 

Um único jogo nesse sorteio 1788. Mas, nos testes que já fiz em muitos sorteios, essa quantidade pode variar de 1 até uns 70, aproximadamente.

 

Quem chegar primeiro na "adivinhação" desses 10 valores para qualquer sorteio futuro, vai se dar muito bem, com certeza!

 

Então, se a gente conseguisse ter um FILTRO "LOOP " para testar os 6.300 possiveis combinações de valores de filtros em cada sorteio, teremos que enfrentar apenas a questão de TEMPO de execução.

 

Serão 6300 tentativas alterando (isso pode e deve ser automatizado, claro) os valores dos filtros e esperar 5 segundos para cada processamento.

Parece pouco mas são 6.300 * 5 segundos + 31.500 segundos = 9 horas, no mínimo, no meu notebook. 

 

Acredito que uma rotina em Assembler isso possa ser reduzido para 1 ou 2 horas, no máximo, mesmo usando meu notebook antigo aqui.

 

Essa parte do Assembler está fora da minha capacidade até o momento. 

 

Quem sabe, quando ganhar a primeira vez, poderemos contratar o Aleksander Stefanovic da Sérvia que, pra mim, tem o programa de geração e filtragem mais rápido do mundo (pode até ter outros, mas por enquanto, o dele é o mais rápido = mais de 300.000.000 de gerações por segundo).

 

Vamos sonhando e imaginando maneiras de chegar lá.

 

Abraços e novamente obrigado pelas suas ótimas idéias!

  • Like 3
Link to comment
Share on other sites

Amigos,

 

Li os posts por cima, creio que uma das dificuldades discutidas seria determinar os valores de min e max de cada setup de filtro.

Isso é feito com muita facilidade, se utilizarmos o conceito de intervalos de confiança.

Intervalos de confiança nada mais são do que um range de valores, calculado em nº de desvios padrões, para baixo e para cima, a partir da média.

 

Vejamos na prática: Suponha que você queira determinar o range de dezenas pares do seu filtro, com 0.95% de confiança, as contas ficariam assim:

 

v = 25

k = 12

t = (min, max) ?

m = 15

 

Média = m * (k / v) = 7,2

Variância = m * (k / v) * ((v - k) / v) * ((v - m) / (v - 1)) = 1,56

Desvio Padrão = 1,248 (raiz quadrada da Variância)

 

Min = Média - (Desvio Padrão * 1.96) = 7,2 - (1,248 * 1.96) = 4,75

Max = Média + (Desvio Padrão * 1.96) = 7,2 + (1,248 * 1.96) = 9,64

 

Portanto...

 

v = 25

k = 12

t = (min = 4,75, max = 9,64)

m = 15

 

Agora arredondamos os valores utilizando a função Math.Round:

 

t = (min = 5 max = 10)

 

Ou, utilizamos as funções Math.Floor e Math.Ceiling, a gosto do cliente.

 

O valor 1.96 é o multiplicador de numeros de desvios padrão, que pela tabela normalizada, equivale a 0.95% dos valores.

Se quisermos apertar os filtros, basta manipularmos esse valor. Basta observar a tabelinha abaixo:

 

 

 

 

 

 

z_distribution.png

  • Like 1
  • Thanks 1
Link to comment
Share on other sites

@bitwizardry 

 

Obrigado pela "luz" de como calcular "antecipadamente" os melhores valores para cada filtro.

 

Da forma que eu venho fazendo, chego nos mesmos números, mas tenho que avaliar todos os valores de cada filtro no histórico.

 

Vou "dar um trato" na cachola para ver como isso pode ajudar e como testar.

 

----

 

Agora, um ponto importante é considerar que se usarmos 99% como meta, também teremos muito pouca redução.

 

Então, na verdade, temos que procurar algo que nos ajude a "retirar" alguns valores do range para conseguir reduzir a contento e manter os premios melhores.

 

 

Link to comment
Share on other sites

@suelsilva 

 

Aqui está minha procedure que aplica filtros.

Espero que ajude em alguma coisa nos seus estudos:

 

function TFrmTesteSets.SFiltrarConjunto( SConjunto: TLotto; ParaSorteio: Integer ): Boolean;
var
    FiltroNum, Acertos, AcertosAtivos, Inicio, Fim, Item, Soma  : Integer;
  I, ContaGrN : Integer;
  arContaN    : array[ 0 .. 20 ] of Integer;
  ConjuntoS, TesteS, ValorS, SConjCONV, ConjParaSoma : TLotto;
  Cabeca, Linha, ValorAnalise, MinAceito, MaxAceito, TesteInicio, Testefim, TesteCabeca, TesteVezes : Integer;
  Bom : Boolean;
  Valor : String;
begin
  Result            := True;         // Inicializa como CONJUNTO ACEITO ( TRUE )

  if cbUsarFiltrosBasicos.Checked then
       begin
        // Filtros FIXOS

          for FiltroNum := 1 to 147 do   //  Primeiros 147 filtros BAsicos ---- FILTROS FIXOS
                begin
                if arFiltroAtivoBasicos[ FiltroNum ] then
                  begin
                        arAnaliseBasicos[ FiltroNum ] := SContarAcertos( SConjunto, arSValorIntBasicos[ FiltroNum ], vMaiorDezena );

                      if not ( arAnaliseBasicos[ FiltroNum ] in arSInteresseBasicos[ FiltroNum ] ) then
                          begin
                            Result                    := False;
                          Exit;
                        end;
                end;
             end;

     // Filtros VARIÁVEIS - Daqui para Frente ....

         // Dezenas - Item 8 ---- QQR Posição
     for FiltroNum := 872 to 994 do
        begin
              if arFiltroAtivoBasicos[ FiltroNum ] then
                  begin
                        arAnaliseBasicos[ FiltroNum ] := SContarAcertos( SConjunto, arSValorIntBasicos[ FiltroNum ], vMaiorDezena );

                      if not ( arAnaliseBasicos[ FiltroNum ] in arSInteresseBasicos[ FiltroNum ] ) then
                          begin
                            Result                    := False;
                          Exit;
                        end;
                end;
          end;

         // Sistema 5 - Item 3 ---- QQR Posição
     for FiltroNum := 158 to 249 do
        begin
              if arFiltroAtivoBasicos[ FiltroNum ] then
                  begin
              Item := 3; SConjCONV := SConverterItem( SConjunto, Item );
                        arAnaliseBasicos[ FiltroNum ] := SContarAcertos( SConjCONV, arSValorIntBasicos[ FiltroNum ], arMenorMaiorItem[ Item, 1 ] );

                      if not ( arAnaliseBasicos[ FiltroNum ] in arSInteresseBasicos[ FiltroNum ] ) then
                          begin
                            Result                    := False;
                          Exit;
                        end;
                end;
          end;


         // Grupo 4 - Item 4 ---- QQR Posição
     for FiltroNum := 260 to 351 do
        begin
              if arFiltroAtivoBasicos[ FiltroNum ] then
                  begin
              Item := 4; SConjCONV := SConverterItem( SConjunto, Item );
                        arAnaliseBasicos[ FiltroNum ] := SContarAcertos( SConjCONV, arSValorIntBasicos[ FiltroNum ], arMenorMaiorItem[ Item, 1 ] );

                      if not ( arAnaliseBasicos[ FiltroNum ] in arSInteresseBasicos[ FiltroNum ] ) then
                          begin
                            Result                    := False;
                          Exit;
                        end;
                end;
          end;

         // Grupos Taufic - Item 5 ---- QQR Posição
     for FiltroNum := 362 to 453 do
        begin
              if arFiltroAtivoBasicos[ FiltroNum ] then
                  begin
              Item := 5; SConjCONV := SConverterItem( SConjunto, Item );
                        arAnaliseBasicos[ FiltroNum ] := SContarAcertos( SConjCONV, arSValorIntBasicos[ FiltroNum ], arMenorMaiorItem[ Item, 1 ] );

                      if not ( arAnaliseBasicos[ FiltroNum ] in arSInteresseBasicos[ FiltroNum ] ) then
                          begin
                            Result                    := False;
                          Exit;
                        end;
                end;
          end;

         // Sistema 3 - Item 6 ---- QQR Posição
     for FiltroNum := 464 to 555 do
        begin
              if arFiltroAtivoBasicos[ FiltroNum ] then
                  begin
              Item := 6; SConjCONV := SConverterItem( SConjunto, Item );
                        arAnaliseBasicos[ FiltroNum ] := SContarAcertos( SConjCONV, arSValorIntBasicos[ FiltroNum ], arMenorMaiorItem[ Item, 1 ] );

                      if not ( arAnaliseBasicos[ FiltroNum ] in arSInteresseBasicos[ FiltroNum ] ) then
                          begin
                            Result                    := False;
                          Exit;
                        end;
                end;
          end;

         // Sistema 2 - Item 7 ---- QQR Posição
     for FiltroNum := 566 to 657 do
        begin
              if arFiltroAtivoBasicos[ FiltroNum ] then
                  begin
              Item := 7; SConjCONV := SConverterItem( SConjunto, Item );
                        arAnaliseBasicos[ FiltroNum ] := SContarAcertos( SConjCONV, arSValorIntBasicos[ FiltroNum ], arMenorMaiorItem[ Item, 1 ] );

                      if not ( arAnaliseBasicos[ FiltroNum ] in arSInteresseBasicos[ FiltroNum ] ) then
                          begin
                            Result                    := False;
                          Exit;
                        end;
                end;
          end;

         // UnDez - Item 1 ---- QQR Posição
     for FiltroNum := 668 to 759 do
        begin
              if arFiltroAtivoBasicos[ FiltroNum ] then
                  begin
              Item := 1; SConjCONV := SConverterItem( SConjunto, Item );
                        arAnaliseBasicos[ FiltroNum ] := SContarAcertos( SConjCONV, arSValorIntBasicos[ FiltroNum ], arMenorMaiorItem[ Item, 1 ] );

                      if not ( arAnaliseBasicos[ FiltroNum ] in arSInteresseBasicos[ FiltroNum ] ) then
                          begin
                            Result                    := False;
                          Exit;
                        end;
                end;
          end;

         // UnUni - Item 2 ---- QQR Posição
     for FiltroNum := 770 to 861 do
        begin
              if arFiltroAtivoBasicos[ FiltroNum ] then
                  begin
              Item := 2; SConjCONV := SConverterItem( SConjunto, Item );
                        arAnaliseBasicos[ FiltroNum ] := SContarAcertos( SConjCONV, arSValorIntBasicos[ FiltroNum ], arMenorMaiorItem[ Item, 1 ] );

                      if not ( arAnaliseBasicos[ FiltroNum ] in arSInteresseBasicos[ FiltroNum ] ) then
                          begin
                            Result                    := False;
                          Exit;
                        end;
                end;
          end;


          // Filtros VARIAVEIS  ----- Mas, por POSIÇÃO ------ Para agilizar o processamento

      Item          := 8;       // ---- Dezenas - Item 8 -- Por POSIÇÃO
      I             := 0;
      ConjuntoResS  := SConverterItemEmString( SConjunto, Item );

      For FiltroNum := 862 to 871 do
            begin
            inc( I );
            if arFiltroAtivoBasicos[ FiltroNum ] then
                  begin
              arAnaliseBasicos[ FiltroNum ] := SContarAcertosPorPosicao( ConjuntoResS, ParaSorteio, I, Item );
              if not ( arAnaliseBasicos[ FiltroNum ] in arSInteresseBasicos[ FiltroNum ] ) then
                          begin
                            Result                    := False;
                          Exit;
                        end;
              end;
          end;

      Item          := 3;       // ---- Sistema5 - Item 3 -- Por POSIÇÃO
      I             := 0;          // Posição I
      ConjuntoResS  := SConverterItemEmString( SConjunto, Item );

      For FiltroNum := 148 to 157 do
            begin
            inc( I );
            if arFiltroAtivoBasicos[ FiltroNum ] then
                  begin
              arAnaliseBasicos[ FiltroNum ] := SContarAcertosPorPosicao( ConjuntoResS, ParaSorteio, I, Item );
              if not ( arAnaliseBasicos[ FiltroNum ] in arSInteresseBasicos[ FiltroNum ] ) then
                          begin
                            Result                    := False;
                          Exit;
                        end;
              end;
          end;

      Item          := 4;       // ---- Grupos 4 - Item 4 -- Por POSIÇÃO
      I             := 0;
      ConjuntoResS  := SConverterItemEmString( SConjunto, Item );

      For FiltroNum := 250 to 259 do
            begin
            inc( I );
            if arFiltroAtivoBasicos[ FiltroNum ] then
                  begin
              arAnaliseBasicos[ FiltroNum ] := SContarAcertosPorPosicao( ConjuntoResS, ParaSorteio, I, Item );
              if not ( arAnaliseBasicos[ FiltroNum ] in arSInteresseBasicos[ FiltroNum ] ) then
                          begin
                            Result                    := False;
                          Exit;
                        end;
              end;
          end;

      Item          := 5 ;       // ---- Grupos Taufic - Item 5 -- Por POSIÇÃO
      I             := 0;
      ConjuntoResS  := SConverterItemEmString( SConjunto, Item );

      For FiltroNum := 352 to 361 do
            begin
            inc( I );
            if arFiltroAtivoBasicos[ FiltroNum ] then
                  begin
              arAnaliseBasicos[ FiltroNum ] := SContarAcertosPorPosicao( ConjuntoResS, ParaSorteio, I, Item );
              if not ( arAnaliseBasicos[ FiltroNum ] in arSInteresseBasicos[ FiltroNum ] ) then
                          begin
                            Result                    := False;
                          Exit;
                        end;
              end;
          end;

      Item          := 6 ;       // ---- Sistema3 - Item 6 -- Por POSIÇÃO
      I             := 0;
      ConjuntoResS  := SConverterItemEmString( SConjunto, Item );

      For FiltroNum := 454 to 463 do
            begin
            inc( I );
            if arFiltroAtivoBasicos[ FiltroNum ] then
                  begin
              arAnaliseBasicos[ FiltroNum ] := SContarAcertosPorPosicao( ConjuntoResS, ParaSorteio, I, Item );
              if not ( arAnaliseBasicos[ FiltroNum ] in arSInteresseBasicos[ FiltroNum ] ) then
                          begin
                            Result                    := False;
                          Exit;
                        end;
              end;
          end;

      Item          := 7 ;       // ---- Sistema2 - Item 7-- Por POSIÇÃO
      I             := 0;
      ConjuntoResS  := SConverterItemEmString( SConjunto, Item );

      For FiltroNum := 556 to 565 do
            begin
            inc( I );
            if arFiltroAtivoBasicos[ FiltroNum ] then
                  begin
              arAnaliseBasicos[ FiltroNum ] := SContarAcertosPorPosicao( ConjuntoResS, ParaSorteio, I, Item );
              if not ( arAnaliseBasicos[ FiltroNum ] in arSInteresseBasicos[ FiltroNum ] ) then
                          begin
                            Result                    := False;
                          Exit;
                        end;
              end;
          end;

      Item          := 1 ;       // ---- UnDez - Item 1 -- Por POSIÇÃO
      I             := 0;
      ConjuntoResS  := SConverterItemEmString( SConjunto, Item );

      For FiltroNum := 658 to 667 do
            begin
            inc( I );
            if arFiltroAtivoBasicos[ FiltroNum ] then
                  begin
              arAnaliseBasicos[ FiltroNum ] := SContarAcertosPorPosicao( ConjuntoResS, ParaSorteio, I, Item );
              if not ( arAnaliseBasicos[ FiltroNum ] in arSInteresseBasicos[ FiltroNum ] ) then
                          begin
                            Result                    := False;
                          Exit;
                        end;
              end;
          end;

      Item          := 2 ;       // ---- UnUni - Item 2 -- Por POSIÇÃO
      I             := 0;
      ConjuntoResS  := SConverterItemEmString( SConjunto, Item );

      For FiltroNum := 760 to 769 do
            begin
            inc( I );
            if arFiltroAtivoBasicos[ FiltroNum ] then
                  begin
              arAnaliseBasicos[ FiltroNum ] := SContarAcertosPorPosicao( ConjuntoResS, ParaSorteio, I, Item );
              if not ( arAnaliseBasicos[ FiltroNum ] in arSInteresseBasicos[ FiltroNum ] ) then
                          begin
                            Result                    := False;
                          Exit;
                        end;
              end;
          end;


         // Para Dezenas ---- Item 8   --- Fltros 995 a 1033 ....     Sugeridas Por Posicao
         //  (3 Sorteios Anteriores e 5 Melhor Frequencia Ultimos 100 Sor por POSIÇÃO)


       Item := 8;  I := 1;      // ---- Para Dezenas ---- Item 8
       for FiltroNum := 995 to 1014 do
            begin
              if arFiltroAtivoBasicos[ FiltroNum ] then
                begin
                  ConjuntoResS  := SConverterItemEmString( SConjunto, Item );    // --------- Array????????
                    Valor         := Piece( I, ConjuntoResS, '-' );
                arAnaliseBasicos[ FiltroNum ] := StrToInt ( Valor );
                    inc( I );
                    if not ( arAnaliseBasicos[ FiltroNum ] in arSInteresseBasicos[ FiltroNum ] ) then
                              begin
                      Result  := False;
                              Exit;
                            end;
              end;
          end;

       Item := 8;  I := 1;      // ---- Para Dezenas ---- Item 8
       for FiltroNum := 1015 to 1034 do
            begin
              if arFiltroAtivoBasicos[ FiltroNum ] then
                begin
                  ConjuntoResS  := SConverterItemEmString( SConjunto, Item );    // --------- Array????????

                    Valor         := Piece( I, ConjuntoResS, '-' );
                arAnaliseBasicos[ FiltroNum ] := StrToInt ( Valor );
                    inc( I );
                    if not ( arAnaliseBasicos[ FiltroNum ] in arSInteresseBasicos[ FiltroNum ] ) then
                              begin
                      Result  := False;
                              Exit;
                            end;
              end;
          end;


         // Somas Diversas -  Item 8  ---- Dezenas

         // Soma Dezenas do Conjunto
       FiltroNum := 1035;
       if arFiltroAtivoBasicos[ FiltroNum ] then
         begin
             ConjParaSoma := SConjunto; Soma :=  SSomarConjunto( ConjParaSoma );
               if ( ( Soma < StrToInt( sgFiltrosBasicos.Cells[ 4, FiltroNum ] ) ) or
                    ( Soma > StrToInt( sgFiltrosBasicos.Cells[ 5, FiltroNum ] ) ) ) then
                      begin
                    Result  := False;
                      Exit;
                    end;
         end;

         // Soma Dezenas Quadrado Perfeito
       FiltroNum := 1036;
       if arFiltroAtivoBasicos[ FiltroNum ] then
         begin
               ConjParaSoma := SConjunto * SConjQuadradoPerfeito; Soma :=  SSomarConjunto( ConjParaSoma );
               if ( ( Soma < StrToInt( sgFiltrosBasicos.Cells[ 4, FiltroNum ] ) ) or
                    ( Soma > StrToInt( sgFiltrosBasicos.Cells[ 5, FiltroNum ] ) ) ) then
                      begin
                    Result  := False;
                      Exit;
                    end;
         end;

         // Soma Dezenas Triangulares
       FiltroNum := 1037;
       if arFiltroAtivoBasicos[ FiltroNum ] then
         begin
               ConjParaSoma := SConjunto * SConjTriangulares; Soma :=  SSomarConjunto( ConjParaSoma );
               if ( ( Soma < StrToInt( sgFiltrosBasicos.Cells[ 4, FiltroNum ] ) ) or
                    ( Soma > StrToInt( sgFiltrosBasicos.Cells[ 5, FiltroNum ] ) ) ) then
                      begin
                    Result  := False;
                      Exit;
                    end;
         end;


         // Soma Dezenas Multiplas 3
       FiltroNum := 1038;
       if arFiltroAtivoBasicos[ FiltroNum ] then
         begin
               ConjParaSoma := SConjunto * SConjMultiplas3; Soma :=  SSomarConjunto( ConjParaSoma );
               if ( ( Soma < StrToInt( sgFiltrosBasicos.Cells[ 4, FiltroNum ] ) ) or
                    ( Soma > StrToInt( sgFiltrosBasicos.Cells[ 5, FiltroNum ] ) ) ) then
                      begin
                    Result  := False;
                      Exit;
                    end;
         end;

         // Soma Dezenas Divino 1
       FiltroNum := 1039;
       if arFiltroAtivoBasicos[ FiltroNum ] then
         begin

          ConjParaSoma := SConjunto * arSValorIntBasicos[ 1039 ];   // Especifico por Loteria
               Soma         := SSomarConjunto( ConjParaSoma );
               if ( ( Soma < StrToInt( sgFiltrosBasicos.Cells[ 4, FiltroNum ] ) ) or
                    ( Soma > StrToInt( sgFiltrosBasicos.Cells[ 5, FiltroNum ] ) ) ) then
                      begin
                    Result  := False;
                      Exit;
                    end;
         end;

         // Soma Dezenas Pares
       FiltroNum := 1040;
       if arFiltroAtivoBasicos[ FiltroNum ] then
         begin
               ConjParaSoma := SConjunto * SConjPares; Soma :=  SSomarConjunto( ConjParaSoma );
               if ( ( Soma < StrToInt( sgFiltrosBasicos.Cells[ 4, FiltroNum ] ) ) or
                    ( Soma > StrToInt( sgFiltrosBasicos.Cells[ 5, FiltroNum ] ) ) ) then
                      begin
                    Result  := False;
                      Exit;
                    end;
         end;

         // Soma Dezenas Impares
       FiltroNum := 1041;
       if arFiltroAtivoBasicos[ FiltroNum ] then
         begin
               ConjParaSoma := SConjunto * SConjImpares; Soma :=  SSomarConjunto( ConjParaSoma );
               if ( ( Soma < StrToInt( sgFiltrosBasicos.Cells[ 4, FiltroNum ] ) ) or
                    ( Soma > StrToInt( sgFiltrosBasicos.Cells[ 5, FiltroNum ] ) ) ) then
                      begin
                    Result  := False;
                      Exit;
                    end;
         end;

         // Soma Dezenas Primos
       FiltroNum := 1042;
       if arFiltroAtivoBasicos[ FiltroNum ] then
         begin
               ConjParaSoma := SConjunto * SConjPrimos; Soma :=  SSomarConjunto( ConjParaSoma );
               if ( ( Soma < StrToInt( sgFiltrosBasicos.Cells[ 4, FiltroNum ] ) ) or
                    ( Soma > StrToInt( sgFiltrosBasicos.Cells[ 5, FiltroNum ] ) ) ) then
                      begin
                    Result  := False;
                      Exit;
                    end;
         end;

         // Soma Dezenas Serie Fibonacci
       FiltroNum := 1043;
       if arFiltroAtivoBasicos[ FiltroNum ] then
         begin
               ConjParaSoma := SConjunto * SConjFibonacci; Soma :=  SSomarConjunto( ConjParaSoma );
               if ( ( Soma < StrToInt( sgFiltrosBasicos.Cells[ 4, FiltroNum ] ) ) or
                    ( Soma > StrToInt( sgFiltrosBasicos.Cells[ 5, FiltroNum ] ) ) ) then
                      begin
                    Result  := False;
                      Exit;
                    end;
         end;

         // Soma Dezenas Serie Lucas
       FiltroNum := 1044;
       if arFiltroAtivoBasicos[ FiltroNum ] then
         begin
               ConjParaSoma := SConjunto * SConjLucas; Soma :=  SSomarConjunto( ConjParaSoma );
               if ( ( Soma < StrToInt( sgFiltrosBasicos.Cells[ 4, FiltroNum ] ) ) or
                ( Soma > StrToInt( sgFiltrosBasicos.Cells[ 5, FiltroNum ] ) ) ) then
                      begin
                    Result  := False;
                      Exit;
                    end;
         end;

         // Soma Dezenas Serie Taylor
       FiltroNum := 1045;
       if arFiltroAtivoBasicos[ FiltroNum ] then
         begin
               ConjParaSoma := SConjunto * SConjTaylor; Soma :=  SSomarConjunto( ConjParaSoma );
               if ( ( Soma < StrToInt( sgFiltrosBasicos.Cells[ 4, FiltroNum ] ) ) or
                ( Soma > StrToInt( sgFiltrosBasicos.Cells[ 5, FiltroNum ] ) ) ) then
                      begin
                    Result  := False;
                      Exit;
                    end;
         end;

         // Soma Dezenas Felizes
       FiltroNum := 1046;
       if arFiltroAtivoBasicos[ FiltroNum ] then
         begin
               ConjParaSoma := SConjunto * SConjFelizes; Soma :=  SSomarConjunto( ConjParaSoma );
               if ( ( Soma < StrToInt( sgFiltrosBasicos.Cells[ 4, FiltroNum ] ) ) or
                    ( Soma > StrToInt( sgFiltrosBasicos.Cells[ 5, FiltroNum ] ) ) ) then
                      begin
                    Result  := False;
                      Exit;
                    end;
         end;

    end;

  // --------------------------------------------------------------------------------------------------
         // Filtros do Tipo Grupo do Cologa --- com Valores MIN e MAX Diferentes na Linha  --- Turbo

  if cbUsarFiltrosCologa.Checked then
      begin
      for FiltroNum := 1 to Length( arQteCabecas ) do
          begin
          // pegar todas as linhas abaixo da CABEÇA - (FiltroNum) e Contar, incrementando ContaGr (QteLinhas que ATENDEM)
          Cabeca    := arQteCabecas[ FiltroNum-1 ];
          ContaGr   := 0;
          for Vezes := StrToInt( sgFiltrosCologa.Cells[ 9, Cabeca ] ) to StrToInt( sgFiltrosCologa.Cells[ 10, Cabeca ] ) do
            begin
                        Conta := SContarAcertos( SConjunto, arSValorIntCologa[ Vezes ], vMaiorDezena );
              if not ( ( Conta < arQMinCologa[ Vezes ] ) or ( Conta > arQMaxCologa[ Vezes ] ) ) then inc( ContaGr );
            end;

          if ( ( ContaGr < arQMinCologa[ Cabeca ] ) or ( ContaGr > arQMaxCologa[ Cabeca ] ) ) then
                  begin
                    Result := False;
                  Exit;
              end;

             end;

    end;

   // --------------------------------------------------------------------------------------------------

        // Filtros do Tipo Grupo ArquivoN (NOVO) --- com Valores MIN e MAX IGUAIS em cada linha --- Menos Cabecas

  if cbUsarFiltrosArquivoN.Checked then
      begin

      for Cabeca             := 1 to sgFiltrosCologaN.RowCount - 1 do
        begin
             // pegar todas as linhas para a cabeça Fazer CONTAGEM, uma única VEZ
             // Testar TODOS os valores Setados como Ativos - acertos... com Contagem de Acertos
          for i              := 0 to 20 do arContaN[ i ] := 0;     // limpa contador

          Inicio             := arInicioFimCabecaN[ Cabeca, 0 ];   // Pega Valor Inicio no Arquivo de Linhas da Cabeca
          Fim                := arInicioFimCabecaN[ Cabeca, 1 ];   // Pega Valor Fim no Arquivo de Linhas da Cabeca
          for Vezes          := 1 to ( Fim - Inicio ) + 1 do
            begin
                TesteInicio    := Inicio;
              TesteFim       := Fim;
              TesteVezes     := Vezes;
              TesteCabeca    := Cabeca;
              TesteS         := arSValorIntCologaN[ Cabeca, Vezes ];

                        Conta          := SContarAcertos( SConjunto, TesteS, vMaiorDezena ); // Conta Acertos
              inc( arContaN[ Conta ] );
            end;


          for Acertos        := 0 to 20 do         // alterar para WHILE......
              begin
                if arFiltroAtivoCologaN[ Cabeca, Acertos ] = True  then
                  begin
                      if ( ( arContaN[ Acertos ] < arQMinMaxCologaN[ Cabeca, Acertos, 0 ] ) or      // min
                                 ( arContaN[ Acertos ] > arQMinMaxCologaN[ Cabeca, Acertos, 1 ] ) ) then  // max
                                   begin
                                    Result := False;          // Se for diferente dos valores Aceitos, CONJUNTO não é bom
                                  Exit;                     // Sai
                              end;
                end;
            end;


        end;
    end;

    // --------------------------------------------------------------------------------------------------

        // Filtros do Tipo PERFIL (NOVO) ---  Ex. Perfil Demais Filtros de Interesse; ...... ) ---

   if cbUsarFiltrosPerfil.Checked then
    begin

    end;


    // --------------------------------------------------------------------------------------------------

        // Filtros do Tipo PRÓPRIOS (Usados na Tela de Geração de Baixo para CIMA - por GRUOPS)

  if cbUsarFiltrosProprios.Checked then
      begin

    end;

end;

// -----------------------------------------------------------

Link to comment
Share on other sites

Boa noite @bitwizardry e @DixieJoe , vocês são sempre muito elegantes nas explicações e isso é muito bom para todos.

Voltei a rastrear os dois e achei aquele livrinho Teoria e cálculo do atraso em italiano:

 

Claro que já deve ter sido superada, levando em consideração o ritmo de pesquisa que vários pesquisadores deste egrégio fórum mantém..

 

Continuo acreditando que mesmo sem prever, podemos fixar valores e arriscar a variação de algum padrão.

 

image.png.c36434fadce5936ddbb7f002abff394a.png

image.png.90ce6c9201fdf7d935e36eb1e58ea8e7.png

image.png.496233a23345a82c125dbc4b8ca2f00d.png

image.png.7dd1fb8aed82e0258ed04e312ab4ccfa.png

 

Claro que a única coisa na loteria é a mudança então as maiores ocorrências são na maioria das vezes as mais prováveis (estou aceitando esta sentença como próximo da verdade*).

 

Como expus no outro tópico, levantar um conjunto de resultados que venham apresentando mesma qtd numérica de acertos, pode-se construir filtros paralelos levando-se em consideração também o erro.

 

Já é de conhecimento à tempo por todos..

 

A ferramenta que vocês e outros internautas que observam seus posts podem construir (ou já construiram) pode e deve encontrar os melhores parâmetros.

 

O roteiro indicado por João Carlos Marinho em O Gênio do Crime (falecido recentemente) já foi usado em um sem número de filtros por diversos programadores mesmo sem conhecer o livro..

 

Essa semana que se passou foi muito esclarecedora, recebi do  @Wata  um conjunto de filtros que muito interessante para a Lotodifícil que deixa passar muito poucos jogos usando os filtros do Cologa.

 

Penso que vocês e outros que estão observando* tem condições sim de indexar e apostar com pouquíssimos jogos com IA alto.

 

Prever não sei, mas recomendo observar estes detalhes escondidos, igualmente os sub-sets de comprimento y atrasados para x acertos em n concursos consecutivos.

 

saudações,

Sphgf

  • Like 2
  • Thanks 1
Link to comment
Share on other sites

@Sphgf 

 

Acabei de fazer a filtragem, supondo acertar, no 1788 2-2-3-1-2.

 

Deixou apenas 1 jogo. Com 15 pontos.

 

Esse é um ótimo caminho, aparentemente.

 

Agora, precisamos encontrar maneiras de derrubar a quantidade de possibilidades existentes nos ranges combinados para conseguir processar em tempo hábil.

 

Imaginei umas 2000 configurações.

 

Vai deixar muitos jogos pro bolso, com certeza. Mas deverão ser jogos com IA alto e isso pode permitir a escolha aleatória dentro do arquivo final, objetivando retorno do investimento e, quem sabe, de vez em quando pegar premios de 14 e até o de 15.

 

----

 

Se puder me ajudar a entender quais os filtros que julgou interessante que o Wata sugeriu, agradeço.

 

E se puder esclarecer melhor o roteiro que mencionou sobre o Genio do Crime, também será benvindo.

 

E obrigado pelo material do italiano. Vou tentar ler e entender.

 

Abraços e um ótimo final de semana!

  • Like 2
Link to comment
Share on other sites

@DixieJoe , Direto ao ponto: Sugeri ao  @Wata  não postar os filtros na web (seria deselegante eu postar ?!) rsrsrs...

Penso que a rotina que você possa incluir seja uma permutação com ao menos 1 valor fixo e variações num range digamos de comprimento 5.

 

Exemplo usando o mesmo concurso:

image.png.d6d1fac19295dc8000f4ac5c51a91bd9.png

 

Range de comprimento 5 igual a valores maiores do que 0 e menor que 4 para (7,8,9,10,11) acertos porém com 9 acertos igual a 3 concursos.

 

image.png.e80f5526f4304ed0a2b0bb4715aa0fe5.png

 

Aqui a coisa começa a piorar pois não sabemos qual a sequência que vai ocorrer, se o retrô 1 vai acertar 9 ou 10 ou 8 etc, se o retrô 2 vai acertar 7 ou 10 etc etc (seriam as permutações acima), parece inviável pois apenas para o exemplo citado o soft deveria rodar 75.600 permutações !! rsrsrs

 

Haja fritação de neurônios, digo cpu... rsrsrsr

 

saudações

Sphgf

 

p.s. esqueci de mencionar que o soft que pode ajudar a gerar a tabela acima é de autoria do Ion Saliu o tal PermuteCombine.exe usando a função Exponents, usei valor 5 e digito menor 1 e maior 3, logo gerou 243 permutações, filtrei com valor igual a 10.

Edited by Sphgf
incluir/corrigir informação relevante
Link to comment
Share on other sites

3 horas atrás, DixieJoe disse:

@suelsilva 

 

Vamos lá!

 

1- Para filtros FIXOS e Variáveis (que são os perto de 1.000) eu coloquei dentro do programa com IFs.

A diferença é que a base de valores (Fixos e Variáveis) é criada ao iniciar o programa. Então estão disponíveis

durante a "vida" do programa.

 

2- Como a maioria dos filtros tem o mesmo tipo de análise, coloquei vários FOR (LOOPs contadores) de filtros que tem o mesmo processamento e dentro desses FOR usei o IF uma única vez.

 

3- Para Filtros do Tipo grupo (exemplo usado no Cologa) que usa grupos - como todos os resultados anteriores e que eu não quero 15 por exemplo, a rotina de Filtro tem o mesmo comportamento dos filtros anteriores. Só lembro que para cada novo Jogo gerado, ele precisa ser testado contra todos os resultados anteriores e só depois é feita a avaliação se aceita ou dependendo da condição inicial definida.

 

Espero ter ajudado.

 

A rotina de filtros é a mais lenta em qualquer programa de loterias.

 

Quando eu ganhar alguma coisa, vou contratar um excelente programador de Assembler para fazer uma rotina IN-LINE dentro do meu programa.

Até ganhar a primeira vez, vou "vivendo" com o que tenho. rsrsrsrs

 

 

Obrigado pela explicação! Agradeço muito!

 

3 horas atrás, DixieJoe disse:

@suelsilva 

 

Não vi até hoje, estabilização de valores nos filtros. Mesmo usando os 10 sorteios anteriores com 3 valores em cada, isso ocorre.

 

 

Também não vi, mas pode existir. 100% estável acredito que não existe, mas desde que não haja uma variação muito grande de um concurso para outro, pra mim seria estável.

 

3 horas atrás, DixieJoe disse:

6.300 possiveis combinações de valores de filtros em cada sorteio

 

Quais seriam essas 6.300 combinações ? Não entendi bem.

Link to comment
Share on other sites

1 hora atrás, DixieJoe disse:

@suelsilva 

 

Aqui está minha procedure que aplica filtros.

Espero que ajude em alguma coisa nos seus estudos:

 

function TFrmTesteSets.SFiltrarConjunto( SConjunto: TLotto; ParaSorteio: Integer ): Boolean;
var
    FiltroNum, Acertos, AcertosAtivos, Inicio, Fim, Item, Soma  : Integer;
  I, ContaGrN : Integer;
  arContaN    : array[ 0 .. 20 ] of Integer;
  ConjuntoS, TesteS, ValorS, SConjCONV, ConjParaSoma : TLotto;
  Cabeca, Linha, ValorAnalise, MinAceito, MaxAceito, TesteInicio, Testefim, TesteCabeca, TesteVezes : Integer;
  Bom : Boolean;
  Valor : String;
begin
  Result            := True;         // Inicializa como CONJUNTO ACEITO ( TRUE )

  if cbUsarFiltrosBasicos.Checked then
       begin
        // Filtros FIXOS

          for FiltroNum := 1 to 147 do   //  Primeiros 147 filtros BAsicos ---- FILTROS FIXOS
                begin
                if arFiltroAtivoBasicos[ FiltroNum ] then
                  begin
                        arAnaliseBasicos[ FiltroNum ] := SContarAcertos( SConjunto, arSValorIntBasicos[ FiltroNum ], vMaiorDezena );

                      if not ( arAnaliseBasicos[ FiltroNum ] in arSInteresseBasicos[ FiltroNum ] ) then
                          begin
                            Result                    := False;
                          Exit;
                        end;
                end;
             end;

     // Filtros VARIÁVEIS - Daqui para Frente ....

         // Dezenas - Item 8 ---- QQR Posição
     for FiltroNum := 872 to 994 do
        begin
              if arFiltroAtivoBasicos[ FiltroNum ] then
                  begin
                        arAnaliseBasicos[ FiltroNum ] := SContarAcertos( SConjunto, arSValorIntBasicos[ FiltroNum ], vMaiorDezena );

                      if not ( arAnaliseBasicos[ FiltroNum ] in arSInteresseBasicos[ FiltroNum ] ) then
                          begin
                            Result                    := False;
                          Exit;
                        end;
                end;
          end;

         // Sistema 5 - Item 3 ---- QQR Posição
     for FiltroNum := 158 to 249 do
        begin
              if arFiltroAtivoBasicos[ FiltroNum ] then
                  begin
              Item := 3; SConjCONV := SConverterItem( SConjunto, Item );
                        arAnaliseBasicos[ FiltroNum ] := SContarAcertos( SConjCONV, arSValorIntBasicos[ FiltroNum ], arMenorMaiorItem[ Item, 1 ] );

                      if not ( arAnaliseBasicos[ FiltroNum ] in arSInteresseBasicos[ FiltroNum ] ) then
                          begin
                            Result                    := False;
                          Exit;
                        end;
                end;
          end;


         // Grupo 4 - Item 4 ---- QQR Posição
     for FiltroNum := 260 to 351 do
        begin
              if arFiltroAtivoBasicos[ FiltroNum ] then
                  begin
              Item := 4; SConjCONV := SConverterItem( SConjunto, Item );
                        arAnaliseBasicos[ FiltroNum ] := SContarAcertos( SConjCONV, arSValorIntBasicos[ FiltroNum ], arMenorMaiorItem[ Item, 1 ] );

                      if not ( arAnaliseBasicos[ FiltroNum ] in arSInteresseBasicos[ FiltroNum ] ) then
                          begin
                            Result                    := False;
                          Exit;
                        end;
                end;
          end;

         // Grupos Taufic - Item 5 ---- QQR Posição
     for FiltroNum := 362 to 453 do
        begin
              if arFiltroAtivoBasicos[ FiltroNum ] then
                  begin
              Item := 5; SConjCONV := SConverterItem( SConjunto, Item );
                        arAnaliseBasicos[ FiltroNum ] := SContarAcertos( SConjCONV, arSValorIntBasicos[ FiltroNum ], arMenorMaiorItem[ Item, 1 ] );

                      if not ( arAnaliseBasicos[ FiltroNum ] in arSInteresseBasicos[ FiltroNum ] ) then
                          begin
                            Result                    := False;
                          Exit;
                        end;
                end;
          end;

         // Sistema 3 - Item 6 ---- QQR Posição
     for FiltroNum := 464 to 555 do
        begin
              if arFiltroAtivoBasicos[ FiltroNum ] then
                  begin
              Item := 6; SConjCONV := SConverterItem( SConjunto, Item );
                        arAnaliseBasicos[ FiltroNum ] := SContarAcertos( SConjCONV, arSValorIntBasicos[ FiltroNum ], arMenorMaiorItem[ Item, 1 ] );

                      if not ( arAnaliseBasicos[ FiltroNum ] in arSInteresseBasicos[ FiltroNum ] ) then
                          begin
                            Result                    := False;
                          Exit;
                        end;
                end;
          end;

         // Sistema 2 - Item 7 ---- QQR Posição
     for FiltroNum := 566 to 657 do
        begin
              if arFiltroAtivoBasicos[ FiltroNum ] then
                  begin
              Item := 7; SConjCONV := SConverterItem( SConjunto, Item );
                        arAnaliseBasicos[ FiltroNum ] := SContarAcertos( SConjCONV, arSValorIntBasicos[ FiltroNum ], arMenorMaiorItem[ Item, 1 ] );

                      if not ( arAnaliseBasicos[ FiltroNum ] in arSInteresseBasicos[ FiltroNum ] ) then
                          begin
                            Result                    := False;
                          Exit;
                        end;
                end;
          end;

         // UnDez - Item 1 ---- QQR Posição
     for FiltroNum := 668 to 759 do
        begin
              if arFiltroAtivoBasicos[ FiltroNum ] then
                  begin
              Item := 1; SConjCONV := SConverterItem( SConjunto, Item );
                        arAnaliseBasicos[ FiltroNum ] := SContarAcertos( SConjCONV, arSValorIntBasicos[ FiltroNum ], arMenorMaiorItem[ Item, 1 ] );

                      if not ( arAnaliseBasicos[ FiltroNum ] in arSInteresseBasicos[ FiltroNum ] ) then
                          begin
                            Result                    := False;
                          Exit;
                        end;
                end;
          end;

         // UnUni - Item 2 ---- QQR Posição
     for FiltroNum := 770 to 861 do
        begin
              if arFiltroAtivoBasicos[ FiltroNum ] then
                  begin
              Item := 2; SConjCONV := SConverterItem( SConjunto, Item );
                        arAnaliseBasicos[ FiltroNum ] := SContarAcertos( SConjCONV, arSValorIntBasicos[ FiltroNum ], arMenorMaiorItem[ Item, 1 ] );

                      if not ( arAnaliseBasicos[ FiltroNum ] in arSInteresseBasicos[ FiltroNum ] ) then
                          begin
                            Result                    := False;
                          Exit;
                        end;
                end;
          end;


          // Filtros VARIAVEIS  ----- Mas, por POSIÇÃO ------ Para agilizar o processamento

      Item          := 8;       // ---- Dezenas - Item 8 -- Por POSIÇÃO
      I             := 0;
      ConjuntoResS  := SConverterItemEmString( SConjunto, Item );

      For FiltroNum := 862 to 871 do
            begin
            inc( I );
            if arFiltroAtivoBasicos[ FiltroNum ] then
                  begin
              arAnaliseBasicos[ FiltroNum ] := SContarAcertosPorPosicao( ConjuntoResS, ParaSorteio, I, Item );
              if not ( arAnaliseBasicos[ FiltroNum ] in arSInteresseBasicos[ FiltroNum ] ) then
                          begin
                            Result                    := False;
                          Exit;
                        end;
              end;
          end;

      Item          := 3;       // ---- Sistema5 - Item 3 -- Por POSIÇÃO
      I             := 0;          // Posição I
      ConjuntoResS  := SConverterItemEmString( SConjunto, Item );

      For FiltroNum := 148 to 157 do
            begin
            inc( I );
            if arFiltroAtivoBasicos[ FiltroNum ] then
                  begin
              arAnaliseBasicos[ FiltroNum ] := SContarAcertosPorPosicao( ConjuntoResS, ParaSorteio, I, Item );
              if not ( arAnaliseBasicos[ FiltroNum ] in arSInteresseBasicos[ FiltroNum ] ) then
                          begin
                            Result                    := False;
                          Exit;
                        end;
              end;
          end;

      Item          := 4;       // ---- Grupos 4 - Item 4 -- Por POSIÇÃO
      I             := 0;
      ConjuntoResS  := SConverterItemEmString( SConjunto, Item );

      For FiltroNum := 250 to 259 do
            begin
            inc( I );
            if arFiltroAtivoBasicos[ FiltroNum ] then
                  begin
              arAnaliseBasicos[ FiltroNum ] := SContarAcertosPorPosicao( ConjuntoResS, ParaSorteio, I, Item );
              if not ( arAnaliseBasicos[ FiltroNum ] in arSInteresseBasicos[ FiltroNum ] ) then
                          begin
                            Result                    := False;
                          Exit;
                        end;
              end;
          end;

      Item          := 5 ;       // ---- Grupos Taufic - Item 5 -- Por POSIÇÃO
      I             := 0;
      ConjuntoResS  := SConverterItemEmString( SConjunto, Item );

      For FiltroNum := 352 to 361 do
            begin
            inc( I );
            if arFiltroAtivoBasicos[ FiltroNum ] then
                  begin
              arAnaliseBasicos[ FiltroNum ] := SContarAcertosPorPosicao( ConjuntoResS, ParaSorteio, I, Item );
              if not ( arAnaliseBasicos[ FiltroNum ] in arSInteresseBasicos[ FiltroNum ] ) then
                          begin
                            Result                    := False;
                          Exit;
                        end;
              end;
          end;

      Item          := 6 ;       // ---- Sistema3 - Item 6 -- Por POSIÇÃO
      I             := 0;
      ConjuntoResS  := SConverterItemEmString( SConjunto, Item );

      For FiltroNum := 454 to 463 do
            begin
            inc( I );
            if arFiltroAtivoBasicos[ FiltroNum ] then
                  begin
              arAnaliseBasicos[ FiltroNum ] := SContarAcertosPorPosicao( ConjuntoResS, ParaSorteio, I, Item );
              if not ( arAnaliseBasicos[ FiltroNum ] in arSInteresseBasicos[ FiltroNum ] ) then
                          begin
                            Result                    := False;
                          Exit;
                        end;
              end;
          end;

      Item          := 7 ;       // ---- Sistema2 - Item 7-- Por POSIÇÃO
      I             := 0;
      ConjuntoResS  := SConverterItemEmString( SConjunto, Item );

      For FiltroNum := 556 to 565 do
            begin
            inc( I );
            if arFiltroAtivoBasicos[ FiltroNum ] then
                  begin
              arAnaliseBasicos[ FiltroNum ] := SContarAcertosPorPosicao( ConjuntoResS, ParaSorteio, I, Item );
              if not ( arAnaliseBasicos[ FiltroNum ] in arSInteresseBasicos[ FiltroNum ] ) then
                          begin
                            Result                    := False;
                          Exit;
                        end;
              end;
          end;

      Item          := 1 ;       // ---- UnDez - Item 1 -- Por POSIÇÃO
      I             := 0;
      ConjuntoResS  := SConverterItemEmString( SConjunto, Item );

      For FiltroNum := 658 to 667 do
            begin
            inc( I );
            if arFiltroAtivoBasicos[ FiltroNum ] then
                  begin
              arAnaliseBasicos[ FiltroNum ] := SContarAcertosPorPosicao( ConjuntoResS, ParaSorteio, I, Item );
              if not ( arAnaliseBasicos[ FiltroNum ] in arSInteresseBasicos[ FiltroNum ] ) then
                          begin
                            Result                    := False;
                          Exit;
                        end;
              end;
          end;

      Item          := 2 ;       // ---- UnUni - Item 2 -- Por POSIÇÃO
      I             := 0;
      ConjuntoResS  := SConverterItemEmString( SConjunto, Item );

      For FiltroNum := 760 to 769 do
            begin
            inc( I );
            if arFiltroAtivoBasicos[ FiltroNum ] then
                  begin
              arAnaliseBasicos[ FiltroNum ] := SContarAcertosPorPosicao( ConjuntoResS, ParaSorteio, I, Item );
              if not ( arAnaliseBasicos[ FiltroNum ] in arSInteresseBasicos[ FiltroNum ] ) then
                          begin
                            Result                    := False;
                          Exit;
                        end;
              end;
          end;


         // Para Dezenas ---- Item 8   --- Fltros 995 a 1033 ....     Sugeridas Por Posicao
         //  (3 Sorteios Anteriores e 5 Melhor Frequencia Ultimos 100 Sor por POSIÇÃO)


       Item := 8;  I := 1;      // ---- Para Dezenas ---- Item 8
       for FiltroNum := 995 to 1014 do
            begin
              if arFiltroAtivoBasicos[ FiltroNum ] then
                begin
                  ConjuntoResS  := SConverterItemEmString( SConjunto, Item );    // --------- Array????????
                    Valor         := Piece( I, ConjuntoResS, '-' );
                arAnaliseBasicos[ FiltroNum ] := StrToInt ( Valor );
                    inc( I );
                    if not ( arAnaliseBasicos[ FiltroNum ] in arSInteresseBasicos[ FiltroNum ] ) then
                              begin
                      Result  := False;
                              Exit;
                            end;
              end;
          end;

       Item := 8;  I := 1;      // ---- Para Dezenas ---- Item 8
       for FiltroNum := 1015 to 1034 do
            begin
              if arFiltroAtivoBasicos[ FiltroNum ] then
                begin
                  ConjuntoResS  := SConverterItemEmString( SConjunto, Item );    // --------- Array????????

                    Valor         := Piece( I, ConjuntoResS, '-' );
                arAnaliseBasicos[ FiltroNum ] := StrToInt ( Valor );
                    inc( I );
                    if not ( arAnaliseBasicos[ FiltroNum ] in arSInteresseBasicos[ FiltroNum ] ) then
                              begin
                      Result  := False;
                              Exit;
                            end;
              end;
          end;


         // Somas Diversas -  Item 8  ---- Dezenas

         // Soma Dezenas do Conjunto
       FiltroNum := 1035;
       if arFiltroAtivoBasicos[ FiltroNum ] then
         begin
             ConjParaSoma := SConjunto; Soma :=  SSomarConjunto( ConjParaSoma );
               if ( ( Soma < StrToInt( sgFiltrosBasicos.Cells[ 4, FiltroNum ] ) ) or
                    ( Soma > StrToInt( sgFiltrosBasicos.Cells[ 5, FiltroNum ] ) ) ) then
                      begin
                    Result  := False;
                      Exit;
                    end;
         end;

         // Soma Dezenas Quadrado Perfeito
       FiltroNum := 1036;
       if arFiltroAtivoBasicos[ FiltroNum ] then
         begin
               ConjParaSoma := SConjunto * SConjQuadradoPerfeito; Soma :=  SSomarConjunto( ConjParaSoma );
               if ( ( Soma < StrToInt( sgFiltrosBasicos.Cells[ 4, FiltroNum ] ) ) or
                    ( Soma > StrToInt( sgFiltrosBasicos.Cells[ 5, FiltroNum ] ) ) ) then
                      begin
                    Result  := False;
                      Exit;
                    end;
         end;

         // Soma Dezenas Triangulares
       FiltroNum := 1037;
       if arFiltroAtivoBasicos[ FiltroNum ] then
         begin
               ConjParaSoma := SConjunto * SConjTriangulares; Soma :=  SSomarConjunto( ConjParaSoma );
               if ( ( Soma < StrToInt( sgFiltrosBasicos.Cells[ 4, FiltroNum ] ) ) or
                    ( Soma > StrToInt( sgFiltrosBasicos.Cells[ 5, FiltroNum ] ) ) ) then
                      begin
                    Result  := False;
                      Exit;
                    end;
         end;


         // Soma Dezenas Multiplas 3
       FiltroNum := 1038;
       if arFiltroAtivoBasicos[ FiltroNum ] then
         begin
               ConjParaSoma := SConjunto * SConjMultiplas3; Soma :=  SSomarConjunto( ConjParaSoma );
               if ( ( Soma < StrToInt( sgFiltrosBasicos.Cells[ 4, FiltroNum ] ) ) or
                    ( Soma > StrToInt( sgFiltrosBasicos.Cells[ 5, FiltroNum ] ) ) ) then
                      begin
                    Result  := False;
                      Exit;
                    end;
         end;

         // Soma Dezenas Divino 1
       FiltroNum := 1039;
       if arFiltroAtivoBasicos[ FiltroNum ] then
         begin

          ConjParaSoma := SConjunto * arSValorIntBasicos[ 1039 ];   // Especifico por Loteria
               Soma         := SSomarConjunto( ConjParaSoma );
               if ( ( Soma < StrToInt( sgFiltrosBasicos.Cells[ 4, FiltroNum ] ) ) or
                    ( Soma > StrToInt( sgFiltrosBasicos.Cells[ 5, FiltroNum ] ) ) ) then
                      begin
                    Result  := False;
                      Exit;
                    end;
         end;

         // Soma Dezenas Pares
       FiltroNum := 1040;
       if arFiltroAtivoBasicos[ FiltroNum ] then
         begin
               ConjParaSoma := SConjunto * SConjPares; Soma :=  SSomarConjunto( ConjParaSoma );
               if ( ( Soma < StrToInt( sgFiltrosBasicos.Cells[ 4, FiltroNum ] ) ) or
                    ( Soma > StrToInt( sgFiltrosBasicos.Cells[ 5, FiltroNum ] ) ) ) then
                      begin
                    Result  := False;
                      Exit;
                    end;
         end;

         // Soma Dezenas Impares
       FiltroNum := 1041;
       if arFiltroAtivoBasicos[ FiltroNum ] then
         begin
               ConjParaSoma := SConjunto * SConjImpares; Soma :=  SSomarConjunto( ConjParaSoma );
               if ( ( Soma < StrToInt( sgFiltrosBasicos.Cells[ 4, FiltroNum ] ) ) or
                    ( Soma > StrToInt( sgFiltrosBasicos.Cells[ 5, FiltroNum ] ) ) ) then
                      begin
                    Result  := False;
                      Exit;
                    end;
         end;

         // Soma Dezenas Primos
       FiltroNum := 1042;
       if arFiltroAtivoBasicos[ FiltroNum ] then
         begin
               ConjParaSoma := SConjunto * SConjPrimos; Soma :=  SSomarConjunto( ConjParaSoma );
               if ( ( Soma < StrToInt( sgFiltrosBasicos.Cells[ 4, FiltroNum ] ) ) or
                    ( Soma > StrToInt( sgFiltrosBasicos.Cells[ 5, FiltroNum ] ) ) ) then
                      begin
                    Result  := False;
                      Exit;
                    end;
         end;

         // Soma Dezenas Serie Fibonacci
       FiltroNum := 1043;
       if arFiltroAtivoBasicos[ FiltroNum ] then
         begin
               ConjParaSoma := SConjunto * SConjFibonacci; Soma :=  SSomarConjunto( ConjParaSoma );
               if ( ( Soma < StrToInt( sgFiltrosBasicos.Cells[ 4, FiltroNum ] ) ) or
                    ( Soma > StrToInt( sgFiltrosBasicos.Cells[ 5, FiltroNum ] ) ) ) then
                      begin
                    Result  := False;
                      Exit;
                    end;
         end;

         // Soma Dezenas Serie Lucas
       FiltroNum := 1044;
       if arFiltroAtivoBasicos[ FiltroNum ] then
         begin
               ConjParaSoma := SConjunto * SConjLucas; Soma :=  SSomarConjunto( ConjParaSoma );
               if ( ( Soma < StrToInt( sgFiltrosBasicos.Cells[ 4, FiltroNum ] ) ) or
                ( Soma > StrToInt( sgFiltrosBasicos.Cells[ 5, FiltroNum ] ) ) ) then
                      begin
                    Result  := False;
                      Exit;
                    end;
         end;

         // Soma Dezenas Serie Taylor
       FiltroNum := 1045;
       if arFiltroAtivoBasicos[ FiltroNum ] then
         begin
               ConjParaSoma := SConjunto * SConjTaylor; Soma :=  SSomarConjunto( ConjParaSoma );
               if ( ( Soma < StrToInt( sgFiltrosBasicos.Cells[ 4, FiltroNum ] ) ) or
                ( Soma > StrToInt( sgFiltrosBasicos.Cells[ 5, FiltroNum ] ) ) ) then
                      begin
                    Result  := False;
                      Exit;
                    end;
         end;

         // Soma Dezenas Felizes
       FiltroNum := 1046;
       if arFiltroAtivoBasicos[ FiltroNum ] then
         begin
               ConjParaSoma := SConjunto * SConjFelizes; Soma :=  SSomarConjunto( ConjParaSoma );
               if ( ( Soma < StrToInt( sgFiltrosBasicos.Cells[ 4, FiltroNum ] ) ) or
                    ( Soma > StrToInt( sgFiltrosBasicos.Cells[ 5, FiltroNum ] ) ) ) then
                      begin
                    Result  := False;
                      Exit;
                    end;
         end;

    end;

  // --------------------------------------------------------------------------------------------------
         // Filtros do Tipo Grupo do Cologa --- com Valores MIN e MAX Diferentes na Linha  --- Turbo

  if cbUsarFiltrosCologa.Checked then
      begin
      for FiltroNum := 1 to Length( arQteCabecas ) do
          begin
          // pegar todas as linhas abaixo da CABEÇA - (FiltroNum) e Contar, incrementando ContaGr (QteLinhas que ATENDEM)
          Cabeca    := arQteCabecas[ FiltroNum-1 ];
          ContaGr   := 0;
          for Vezes := StrToInt( sgFiltrosCologa.Cells[ 9, Cabeca ] ) to StrToInt( sgFiltrosCologa.Cells[ 10, Cabeca ] ) do
            begin
                        Conta := SContarAcertos( SConjunto, arSValorIntCologa[ Vezes ], vMaiorDezena );
              if not ( ( Conta < arQMinCologa[ Vezes ] ) or ( Conta > arQMaxCologa[ Vezes ] ) ) then inc( ContaGr );
            end;

          if ( ( ContaGr < arQMinCologa[ Cabeca ] ) or ( ContaGr > arQMaxCologa[ Cabeca ] ) ) then
                  begin
                    Result := False;
                  Exit;
              end;

             end;

    end;

   // --------------------------------------------------------------------------------------------------

        // Filtros do Tipo Grupo ArquivoN (NOVO) --- com Valores MIN e MAX IGUAIS em cada linha --- Menos Cabecas

  if cbUsarFiltrosArquivoN.Checked then
      begin

      for Cabeca             := 1 to sgFiltrosCologaN.RowCount - 1 do
        begin
             // pegar todas as linhas para a cabeça Fazer CONTAGEM, uma única VEZ
             // Testar TODOS os valores Setados como Ativos - acertos... com Contagem de Acertos
          for i              := 0 to 20 do arContaN[ i ] := 0;     // limpa contador

          Inicio             := arInicioFimCabecaN[ Cabeca, 0 ];   // Pega Valor Inicio no Arquivo de Linhas da Cabeca
          Fim                := arInicioFimCabecaN[ Cabeca, 1 ];   // Pega Valor Fim no Arquivo de Linhas da Cabeca
          for Vezes          := 1 to ( Fim - Inicio ) + 1 do
            begin
                TesteInicio    := Inicio;
              TesteFim       := Fim;
              TesteVezes     := Vezes;
              TesteCabeca    := Cabeca;
              TesteS         := arSValorIntCologaN[ Cabeca, Vezes ];

                        Conta          := SContarAcertos( SConjunto, TesteS, vMaiorDezena ); // Conta Acertos
              inc( arContaN[ Conta ] );
            end;


          for Acertos        := 0 to 20 do         // alterar para WHILE......
              begin
                if arFiltroAtivoCologaN[ Cabeca, Acertos ] = True  then
                  begin
                      if ( ( arContaN[ Acertos ] < arQMinMaxCologaN[ Cabeca, Acertos, 0 ] ) or      // min
                                 ( arContaN[ Acertos ] > arQMinMaxCologaN[ Cabeca, Acertos, 1 ] ) ) then  // max
                                   begin
                                    Result := False;          // Se for diferente dos valores Aceitos, CONJUNTO não é bom
                                  Exit;                     // Sai
                              end;
                end;
            end;


        end;
    end;

    // --------------------------------------------------------------------------------------------------

        // Filtros do Tipo PERFIL (NOVO) ---  Ex. Perfil Demais Filtros de Interesse; ...... ) ---

   if cbUsarFiltrosPerfil.Checked then
    begin

    end;


    // --------------------------------------------------------------------------------------------------

        // Filtros do Tipo PRÓPRIOS (Usados na Tela de Geração de Baixo para CIMA - por GRUOPS)

  if cbUsarFiltrosProprios.Checked then
      begin

    end;

end;

// -----------------------------------------------------------

 

 

Não entendo de Delphi, mas muito obrigado por disponibilizar, algum momento pode servir, pois eu poderia extrair um pouco lógica do seu código. Obrigado!!

Link to comment
Share on other sites

Pessoal,

 

As vezes eu não consigo entender muitas coisas do vocês postam. Leio os tópicos aqui do fórum e sofro pra entender rsrs

 

Eu não tô a muito tempo nesses estudos, então muitas definições não sei interpretar bem aqui. Então peço desculpas pela minha ignorância nesse sentido. Vocês já são acostumados aqui, eu cheguei agora. Mas aos poucos irei pegando o jeito. Se puderem indicar tópicos onde eu possa aprender a interpretar melhor as coisas aqui, definições,etc... eu agradeceria, pois facilitaria nos estudos.

  • Like 2
Link to comment
Share on other sites

@Sphgf e @DixieJoe

 

O procedimento que eu descrevi já é utilizado dentro das ciências estatísticas há  uns 100 anos, nenhuma novidade.

 

A única observação que faço, é que como o "range total" da distribuição hipergeométrica quase sempre é um range de valores muito curto, é praticamente impossível "setar" o intervalo de confiança exato desejado, mas algo aproximado dele. O que mais se aproxima de uma "distribuição normal" em se tratando de filtros de loteria, é os Filtro das Somas, pois a curva é perfeitamente simétrica.

 

Sobre o paper dos italianos, eu já tinha visto e tentei traduzi-lo por inteiro para entender o raciocínio e a proposta dos autores, mas o google translator traduziu apenas as primeiras páginas..

 

Fui direto à formula e não entendi o significado das variáveis, que são a,b,c,d,x.

 

(a/b) ^ x = c / d

 

onde...

 

x = (log(d) - log(c)) / (log(b) - log(a))

 

Se alguém entendeu o que significa os valores de a,b,c,d, poderia ajudar no debate.

 

Minha fórmula alternativa é uma variação da fórmula da distribuição geométrica:

 

Probabilidade de saída = 1. - Math.Pow(1 - p, x + 1)

 

Onde:

 

p = probabilidade do evento

x = numero de tentativas

 

Na prática: Se você estiver lançando um dado, estando interessado na ocorrencia de um determinado lado, qual é o nível de certeza do sucesso após de 5 falhas consecutivas?

 

p = 0.16666

x = 5

 

Probabilidade de saída  = 1 -  (0.8333 ^ 6)  = 0,665100415806113

Se fossem 20 tentativas, probabilidade de saída seria 0,978262923733175

 

Se alguém conseguiu desenvolver um cálculo alternativo levando em consideração outro fator, estarei interessado em conhecer.

 

@Sphgf

 

Sobre a sua sugestão de filtro baseado nos ultimos 10 concursos, achei interessante. Vou implementar aqui e depois te informo os resultados.

 

 

Edited by bitwizardry
  • Thanks 1
Link to comment
Share on other sites

12 minutos atrás, suelsilva disse:

As vezes eu não consigo entender muitas coisas do vocês postam. Leio os tópicos aqui do fórum e sofro pra entender rsrs

 

Amigo @suelsilva

 

Te recomendo estudar e entender de cór a natureza das distribuições HiperGeométrica e Binomial, são elas que regem o universo das loterias.

 

https://en.wikipedia.org/wiki/Hypergeometric_distribution

https://en.wikipedia.org/wiki/Binomial_distribution

Link to comment
Share on other sites

" Fui direto à formula e não entendi o significado das variáveis, que são a,b,c,d,x.

(a/b) ^ x = c / d "

 

O exemplo dele "mistura" o observado (empírico=sorteios realizados) com o teórico...

 

Penso que o mais correto fosse um número adimensional proveniente de um limite, no exemplo ele usa extrações reais..

" No primeiro membro temos o valor de probabilidade oposto, no segundo temos o 1 que corresponde ao caso que estamos procurando e 646.100 que corresponde à quantidade de extratos ambi de 1 de janeiro de 1871 a 31 de dezembro de 2002: "

 

O mestre Elarrat fez um trabalho bem parecido com este..

 

bom final de semana,

Sphgf

  • Like 2
Link to comment
Share on other sites

1 hora atrás, Sphgf disse:

(seria deselegante eu postar ?!) rsrsrs...

 

De forma alguma.

Na verdade isto já foi postado em algum local aqui desse fórum... mas acho que é comum (ou será que é só comigo ??? ...:lol:...) passar batido em muitas postagens que tem aqui e só buscá-las quando alguém faz algum comentário...:ph34r:...

 

Antes eu jogava uma pedra pro alto e esperava que ela caísse na combinação premiada.

Eu ainda não sei qual será essa combinação, mas já consigo identificar a direção em que ela está.

Então basicamente eu mando a pedrada "naquela reta" e conto com a (indispensável) sorte...:mrgreen:...

 

Na prática funciona assim:

1° seleciono as linhas dos resultados passados que mantém a mesma quantidade de acertos nos 3 últimos concursos.

2° dentro dessas linhas escolho, ao acaso mesmo(...:shock:...), umas 10 a 15 e utilizo como filtros.

 

É apenas isso.

Se eu tiver a sorte de ter escolhido todas as linhas corretas no filtro, a linha premiada será gerada.

O problema aqui é que o COLOGA demora muito pra concluir esse processamento... (por isso minha tentativa de achar o valor do X ... outro tópico meu... procurem no fórum...)

 

Agora vcs devem estar pensando que vai ser necessário uma sorte muito grande pra escolher as linhas corretas de filtro... e vcs estão certos...:unsure:...

Mas como ainda não consigo nada melhor que isso, aceito sugestões...

 

:cool:

...

 

*Para o 1798, acho que (+ -) 41 linhas entre essas 130 linhas estarão corretas.

1_8 | 10 | 10 | 01 | 01 05 06 08 09 10 13 15 16 17 18 19 20 22 25
2_35 | 08 | 08 | 01 | 01 04 05 06 11 12 13 14 16 17 19 21 22 23 25
3_46 | 09 | 09 | 01 | 01 02 04 05 06 08 10 11 14 18 19 21 23 24 25
4_47 | 08 | 08 | 01 | 01 02 03 04 05 06 08 10 11 13 15 18 20 22 25
5_96 | 10 | 10 | 01 | 03 04 06 09 10 12 14 16 17 18 19 21 22 23 24
6_97 | 09 | 09 | 01 | 03 04 06 10 12 13 14 15 17 19 20 22 23 24 25
7_98 | 09 | 09 | 01 | 01 02 05 06 08 10 11 15 17 18 20 22 23 24 25
8_106 | 08 | 08 | 01 | 01 02 03 04 05 06 10 12 13 14 15 17 22 23 25
9_129 | 09 | 09 | 01 | 02 05 06 07 09 11 13 15 18 19 20 21 22 23 25
10_130 | 10 | 10 | 01 | 02 03 04 05 06 09 10 12 13 15 17 19 23 24 25
11_155 | 09 | 09 | 01 | 02 04 05 08 10 11 14 15 16 18 19 20 21 22 24
12_157 | 10 | 10 | 01 | 01 02 04 06 07 09 10 12 14 16 18 19 21 24 25
13_181 | 08 | 08 | 01 | 01 04 05 06 07 08 14 15 16 17 19 20 21 22 23
14_196 | 10 | 10 | 01 | 02 03 04 05 10 14 15 16 17 19 20 22 23 24 25
15_207 | 08 | 08 | 01 | 01 02 03 04 06 09 10 12 13 14 15 17 19 20 22
16_214 | 09 | 09 | 01 | 01 02 03 04 09 11 13 14 15 18 19 20 22 24 25
17_255 | 09 | 09 | 01 | 01 02 03 04 06 09 10 14 15 16 17 21 22 23 24
18_262 | 08 | 08 | 01 | 03 04 06 07 08 09 12 13 14 15 17 20 21 23 24
19_263 | 10 | 10 | 01 | 01 04 07 08 09 10 11 14 15 16 18 19 21 23 24
20_265 | 09 | 09 | 01 | 01 05 07 08 11 12 13 15 16 17 18 19 20 22 24
21_279 | 09 | 09 | 01 | 01 02 03 05 06 09 10 11 12 13 17 18 19 22 23
22_281 | 09 | 09 | 01 | 01 02 03 04 08 09 10 11 12 14 15 17 19 23 25
23_290 | 07 | 07 | 01 | 01 02 05 06 07 09 11 12 13 14 17 20 21 22 23
24_291 | 08 | 08 | 01 | 01 02 05 07 08 10 11 12 13 14 15 17 20 23 24
25_311 | 10 | 10 | 01 | 02 04 05 07 10 12 14 15 16 17 19 20 23 24 25
26_316 | 09 | 09 | 01 | 01 03 04 06 07 08 10 12 13 14 15 18 19 23 24
27_323 | 09 | 09 | 01 | 01 02 03 04 06 07 09 10 14 17 19 20 21 23 25
28_325 | 09 | 09 | 01 | 01 02 04 05 06 07 10 14 15 19 20 22 23 24 25
29_364 | 08 | 08 | 01 | 02 03 04 06 07 09 11 12 13 15 19 20 21 22 24
30_381 | 09 | 09 | 01 | 01 03 04 06 07 09 10 12 13 15 17 19 21 22 25
31_384 | 09 | 09 | 01 | 01 03 04 07 10 11 13 15 17 18 19 20 21 22 25
32_397 | 08 | 08 | 01 | 01 02 03 04 05 06 08 09 10 13 14 15 20 22 25
33_436 | 09 | 09 | 01 | 03 04 06 07 10 13 14 15 18 19 20 21 22 23 25
34_470 | 08 | 08 | 01 | 01 03 04 05 06 07 08 10 11 13 15 18 20 22 23
35_489 | 09 | 09 | 01 | 01 02 05 07 10 11 12 14 17 18 19 21 22 23 25
36_497 | 09 | 09 | 01 | 01 02 03 04 05 08 09 11 12 14 16 17 19 23 25
37_498 | 08 | 08 | 01 | 01 02 04 05 06 11 13 14 15 16 18 20 22 23 25
38_513 | 09 | 09 | 01 | 01 02 03 06 09 10 11 13 15 17 18 20 22 23 25
39_519 | 10 | 10 | 01 | 02 03 07 09 11 12 13 15 16 17 19 21 23 24 25
40_528 | 09 | 09 | 01 | 02 03 04 06 07 08 10 11 12 15 19 21 23 24 25
41_567 | 09 | 09 | 01 | 01 02 05 07 08 09 10 12 13 14 15 17 21 24 25
42_576 | 10 | 10 | 01 | 06 08 09 10 11 12 13 15 16 17 18 19 21 23 25
43_582 | 10 | 10 | 01 | 03 07 08 09 10 11 12 13 15 17 18 19 21 23 25
44_585 | 10 | 10 | 01 | 01 05 07 08 09 10 13 14 15 16 17 18 20 23 24
45_588 | 09 | 09 | 01 | 01 04 05 07 11 12 13 14 17 18 19 20 23 24 25
46_604 | 09 | 09 | 01 | 01 02 06 07 09 12 13 14 15 18 19 20 22 24 25
47_614 | 09 | 09 | 01 | 01 05 06 07 09 11 12 13 16 17 18 19 20 22 23
48_655 | 09 | 09 | 01 | 02 05 07 08 10 11 13 14 15 19 20 21 23 24 25
49_674 | 10 | 10 | 01 | 02 03 08 10 11 14 15 16 18 19 20 22 23 24 25
50_677 | 09 | 09 | 01 | 01 02 05 06 07 08 10 11 12 13 15 16 19 23 25
51_703 | 09 | 09 | 01 | 02 05 08 10 11 14 15 17 18 20 21 22 23 24 25
52_726 | 09 | 09 | 01 | 01 02 04 07 09 10 11 13 14 15 16 20 21 24 25
53_752 | 09 | 09 | 01 | 01 04 05 06 07 08 12 13 14 16 18 19 21 24 25
54_760 | 10 | 10 | 01 | 01 02 03 07 09 10 11 12 13 15 16 17 23 24 25
55_767 | 09 | 09 | 01 | 01 03 04 05 07 08 10 11 12 15 17 19 22 23 24
56_783 | 08 | 08 | 01 | 01 02 05 06 07 08 11 13 15 16 19 20 21 22 24
57_789 | 09 | 09 | 01 | 02 03 04 08 10 11 12 14 15 16 18 19 21 22 24
58_793 | 09 | 09 | 01 | 02 04 05 07 09 11 12 14 16 17 18 20 21 23 25
59_816 | 10 | 10 | 01 | 02 03 05 08 09 10 11 12 13 15 16 17 19 23 25
60_824 | 08 | 08 | 01 | 02 03 04 07 11 12 13 14 15 19 20 21 22 24 25
61_828 | 09 | 09 | 01 | 01 06 07 08 09 12 14 15 17 19 20 22 23 24 25
62_830 | 09 | 09 | 01 | 01 04 06 09 10 11 12 13 14 16 17 19 21 23 24
63_835 | 09 | 09 | 01 | 01 02 04 06 08 12 14 15 16 17 18 19 21 24 25
64_866 | 09 | 09 | 01 | 01 02 03 05 07 08 09 10 11 13 14 18 20 23 24
65_878 | 09 | 09 | 01 | 01 02 03 05 06 07 10 12 13 14 16 19 22 23 25
66_903 | 08 | 08 | 01 | 01 02 03 04 05 06 08 10 11 13 15 16 18 20 22
67_904 | 10 | 10 | 01 | 01 05 06 07 09 10 12 13 16 17 18 19 20 22 24
68_906 | 09 | 09 | 01 | 01 02 03 05 06 07 08 09 10 12 17 18 21 22 24
69_911 | 08 | 08 | 01 | 01 02 03 05 06 08 11 13 15 17 21 22 23 24 25
70_925 | 09 | 09 | 01 | 01 03 04 06 07 09 12 13 14 15 16 22 23 24 25
71_935 | 09 | 09 | 01 | 01 02 03 04 05 06 07 09 10 12 14 18 19 22 23
72_941 | 10 | 10 | 01 | 01 02 03 04 05 07 08 09 10 11 15 16 18 23 25
73_944 | 10 | 10 | 01 | 01 08 09 10 11 12 13 14 16 17 18 19 21 24 25
74_952 | 08 | 08 | 01 | 01 03 04 06 08 11 12 14 17 18 19 21 22 23 25
75_955 | 09 | 09 | 01 | 01 02 04 05 07 09 10 11 12 13 14 16 18 21 24
76_1011 | 11 | 11 | 01 | 01 03 04 05 07 09 10 13 15 17 18 19 23 24 25
77_1022 | 10 | 10 | 01 | 01 03 04 05 07 08 09 10 14 16 18 21 22 24 25
78_1076 | 09 | 09 | 01 | 04 09 10 11 12 13 14 15 16 17 18 20 21 22 25
79_1092 | 09 | 09 | 01 | 04 05 08 09 11 12 13 14 15 18 19 20 22 24 25
80_1094 | 09 | 09 | 01 | 01 02 03 04 05 06 08 09 10 12 14 16 19 22 25
81_1103 | 09 | 09 | 01 | 02 04 05 07 09 10 11 12 14 16 18 20 21 22 25
82_1110 | 10 | 10 | 01 | 01 02 03 04 06 09 10 15 17 18 19 20 22 24 25
83_1130 | 08 | 08 | 01 | 01 02 05 08 10 11 12 13 14 15 17 20 22 24 25
84_1177 | 09 | 09 | 01 | 02 03 05 06 08 09 10 11 12 16 17 20 22 23 25
85_1257 | 08 | 08 | 01 | 01 02 05 06 08 10 11 12 13 14 16 19 20 22 25
86_1278 | 10 | 10 | 01 | 04 06 07 09 10 12 15 16 17 18 19 20 21 22 24
87_1310 | 09 | 09 | 01 | 01 02 03 04 05 07 08 10 11 15 17 18 19 21 23
88_1323 | 08 | 08 | 01 | 01 04 05 06 09 10 11 13 14 17 19 20 21 22 23
89_1348 | 09 | 09 | 01 | 01 02 06 07 08 09 10 14 15 18 20 21 22 24 25
90_1355 | 08 | 08 | 01 | 01 02 03 04 06 07 08 11 15 16 18 20 21 22 24
91_1368 | 10 | 10 | 01 | 05 07 08 10 11 12 14 16 18 19 20 22 23 24 25
92_1384 | 09 | 09 | 01 | 03 04 06 08 09 11 12 13 15 18 19 20 22 24 25
93_1385 | 09 | 09 | 01 | 04 05 08 09 10 11 12 13 14 15 17 18 19 20 23
94_1396 | 10 | 10 | 01 | 03 05 06 07 10 12 13 17 18 19 20 22 23 24 25
95_1434 | 10 | 10 | 01 | 03 04 05 06 07 09 10 12 13 15 18 19 22 23 24
96_1438 | 08 | 08 | 01 | 01 04 07 08 09 10 11 12 14 15 17 20 21 22 24
97_1459 | 10 | 10 | 01 | 01 04 06 09 10 12 13 14 16 17 18 19 20 24 25
98_1481 | 10 | 10 | 01 | 02 03 05 07 08 09 11 17 18 19 20 21 23 24 25
99_1482 | 09 | 09 | 01 | 01 02 04 05 07 08 09 10 11 12 14 15 19 23 24
100_1485 | 10 | 10 | 01 | 01 02 03 05 08 09 11 13 15 17 18 19 23 24 25
101_1502 | 08 | 08 | 01 | 01 02 03 04 05 07 11 12 13 15 17 18 20 22 24
102_1504 | 09 | 09 | 01 | 01 04 05 07 08 11 12 14 17 18 19 21 23 24 25
103_1508 | 09 | 09 | 01 | 01 03 07 08 09 10 11 12 14 17 19 21 22 23 24
104_1516 | 09 | 09 | 01 | 01 02 06 07 10 11 12 14 16 18 19 20 22 23 24
105_1524 | 09 | 09 | 01 | 01 03 05 06 07 08 09 10 13 14 20 22 23 24 25
106_1534 | 09 | 09 | 01 | 01 04 05 08 09 10 11 12 13 14 16 17 19 21 24
107_1537 | 08 | 08 | 01 | 01 02 03 04 10 11 13 14 15 17 18 20 21 22 24
108_1564 | 09 | 09 | 01 | 03 04 06 08 09 11 12 13 16 17 18 19 20 21 24
109_1580 | 09 | 09 | 01 | 03 04 07 10 11 12 13 14 15 16 18 20 22 23 25
110_1602 | 09 | 09 | 01 | 01 03 04 08 09 10 11 13 14 15 17 19 21 23 24
111_1604 | 09 | 09 | 01 | 03 04 05 06 07 08 09 10 12 13 15 19 21 22 24
112_1618 | 10 | 10 | 01 | 01 03 04 05 08 09 10 13 14 16 17 19 20 24 25
113_1626 | 09 | 09 | 01 | 01 03 04 07 08 09 10 11 13 15 16 17 20 21 24
114_1630 | 09 | 09 | 01 | 03 05 07 08 09 10 12 13 14 15 17 20 22 23 25
115_1653 | 08 | 08 | 01 | 02 04 05 06 07 12 14 15 17 20 21 22 23 24 25
116_1656 | 09 | 09 | 01 | 02 03 04 05 07 10 11 12 13 15 17 19 20 23 24
117_1662 | 08 | 08 | 01 | 01 02 03 05 08 10 11 13 14 17 18 20 21 22 25
118_1663 | 08 | 08 | 01 | 01 02 03 05 06 07 09 11 12 13 16 17 21 22 23
119_1672 | 09 | 09 | 01 | 02 03 05 06 08 09 11 17 18 20 21 22 23 24 25
120_1688 | 09 | 09 | 01 | 01 03 04 05 06 07 08 10 13 15 19 21 22 24 25
121_1691 | 09 | 09 | 01 | 01 02 03 04 05 07 08 10 11 12 13 15 16 18 19
122_1699 | 10 | 10 | 01 | 04 05 06 08 09 10 13 14 15 16 19 21 23 24 25
123_1706 | 08 | 08 | 01 | 02 03 04 05 07 08 09 12 13 14 15 17 18 20 21
124_1719 | 09 | 09 | 01 | 02 03 04 06 10 11 13 15 17 18 20 21 23 24 25
125_1729 | 09 | 09 | 01 | 01 02 04 06 08 09 10 11 12 14 16 18 21 24 25
126_1747 | 09 | 09 | 12 | 01 04 05 06 07 08 10 13 15 16 17 19 20 21 25
127_1751 | 10 | 10 | 23 | 01 03 04 06 07 09 10 12 13 15 18 19 22 24 25
128_1759 | 09 | 09 | 34 | 01 02 03 04 05 06 08 10 14 15 16 18 19 22 23
129_1764 | 09 | 09 | 45 | 01 02 04 06 07 10 12 14 15 16 17 19 20 23 25
130_1774 | 10 | 10 | 56 | 03 07 09 10 12 13 14 15 17 19 20 22 23 24 25

 

...

 

  • Like 1
  • Thanks 1
Link to comment
Share on other sites

37 minutos atrás, Sphgf disse:

O exemplo dele "mistura" o observado (empírico=sorteios realizados) com o teórico...

 

Muito interessante, era algo nesse sentido que eu estava procurando...

 

Vasculhei novamente o paper e encontrei as respostas das minhas próprias perguntas... rsss

 

"... em sua forma mais geral, (a / b) x = c / d, tem para termos:

a - número de casos favoráveis à não ocorrência de certa combinação de jogo;

b - número de todos os casos possíveis relacionados à mesma combinação;

c - igual a 1 para encontrar o atraso normal e o atraso máximo; igual a 1,50 e 0,50 para a pesquisa do limites de variabilidade do atraso normal;

d - número de combinações que podem ser compostas com os 90 números relativos ao jogo sendo considerado para a busca do atraso normal, e igual ao número de todos os casos ocorridos desde 1871, relativamente para o jogo em questão, para encontrar o atraso máximo."

 

Eventualmente, esqueço de uma sigla que já salvou minha vida muitas vezes, "R.T.F.M" = "Read The Fucking Manual"

Ler direito o manual, sempre ajuda..

 

Abraço Paulo.

  • Thanks 1
Link to comment
Share on other sites

@Wata 

 

Esse filtro com EXATOS MIN=41 e MAX=41 geraram 116.991 jogos no meu programinha.

 

Quando diz +- 41, essa variação eventualmente aceita pode fazer subir essa quantidade de forma substancial, concorda?

 

Curiosidade minha: No Cologa, quanto tempo demora pra você gerar esses 116.991 jogos?

-----

 

Quanto a estas observações:

 

Na prática funciona assim:

1° seleciono as linhas dos resultados passados que mantém a mesma quantidade de acertos nos 3 últimos concursos.

2° dentro dessas linhas escolho, ao acaso mesmo(...:shock:...), umas 10 a 15 e utilizo como filtros.

 

É apenas isso.

Se eu tiver a sorte de ter escolhido todas as linhas corretas no filtro, a linha premiada será gerada.

O problema aqui é que o COLOGA demora muito pra concluir esse processamento... (por isso minha tentativa de achar o valor do X ... outro tópico meu... procurem no fórum...)

 

Essa seleção de quantidade de acertos nos últimos 3 concursos e a escolha ao acaso é que deve ter gerado o filtro acima, correto?

Lembro que já conversamos sobre isso.

 

Quanto à teoria de achar o valor do X... eu não consegui pensar em nada que ajude, infelizmente.

 

Quanto ao tempo de espera para o Cologa processar 130 linhas de filtros em todas as 3,2 milhões de combinações, acho até compreensível. Afinal, estamos falando de 130*3.268.760 testes para escolher apenas aquelas linhas que vão atender aos 41 desejados.

 

No meu programa também é demorado. Leva em torno de 2 minutos.

 

  • Like 1
  • Thanks 1
Link to comment
Share on other sites

@Wata 

 

Estive pensando aqui e gostaria de saber se você tem alguma observação já feita quanto à quantidade de vezes que teríamos que processar, usando seu modelo de filtros e considerando que cada vez, teríamos que mudar apenas a "cabeça" do filtro (MIN=41 MAX=41).

 

Em cada passada, usaríamos outros valores "ao redor" desse valor que você sugeriu. Exemplo, se o range de TENTATIVAS for de 11, podemos imaginar aplicar de 35 a 46. Depois de uma hora no meu programa, teríamos executadas todas as tentativas.

 

Do que não gosto nesse modelo é  que vamos subir a quantidade de jogos criados para mais de 1.000.000. Provavelmente haverá muitos duplicados e que poderão ser removidos. Mas ainda deve sobrar bastante.

 

Mas é algo a considerar. O que acha?

Link to comment
Share on other sites

@Sphgf @Wata @bitwizardry @suelsilva 

 

Analisei 1752 sorteios seguidos em relação ao sistema de filtros proposto pelo Sphgf.

 

Vejam ai, na parte inferior e tirem suas conclusões.

 

Parece ser um ótimo caminho para espera.

 

Mas temos que abrir as quantidades em cada valor a ser aceito. 

 

https://www.dropbox.com/s/h2e3j7xrhlr4x6c/Estudo Filtros DixiePRO Lotofacil 11 ao 1763 Repetições 10 ultimos.xlsx?dl=1

  • Like 1
  • Thanks 3
Link to comment
Share on other sites

9 horas atrás, Sphgf disse:

Boa noite @bitwizardry e @DixieJoe , vocês são sempre muito elegantes nas explicações e isso é muito bom para todos.

Voltei a rastrear os dois e achei aquele livrinho Teoria e cálculo do atraso em italiano:

 

Claro que já deve ter sido superada, levando em consideração o ritmo de pesquisa que vários pesquisadores deste egrégio fórum mantém..

 

Continuo acreditando que mesmo sem prever, podemos fixar valores e arriscar a variação de algum padrão.

 

image.png.c36434fadce5936ddbb7f002abff394a.png

image.png.90ce6c9201fdf7d935e36eb1e58ea8e7.png

image.png.496233a23345a82c125dbc4b8ca2f00d.png

image.png.7dd1fb8aed82e0258ed04e312ab4ccfa.png

 

Claro que a única coisa na loteria é a mudança então as maiores ocorrências são na maioria das vezes as mais prováveis (estou aceitando esta sentença como próximo da verdade*).

 

Como expus no outro tópico, levantar um conjunto de resultados que venham apresentando mesma qtd numérica de acertos, pode-se construir filtros paralelos levando-se em consideração também o erro.

 

Já é de conhecimento à tempo por todos..

 

A ferramenta que vocês e outros internautas que observam seus posts podem construir (ou já construiram) pode e deve encontrar os melhores parâmetros.

 

O roteiro indicado por João Carlos Marinho em O Gênio do Crime (falecido recentemente) já foi usado em um sem número de filtros por diversos programadores mesmo sem conhecer o livro..

 

Essa semana que se passou foi muito esclarecedora, recebi do  @Wata  um conjunto de filtros que muito interessante para a Lotodifícil que deixa passar muito poucos jogos usando os filtros do Cologa.

 

Penso que vocês e outros que estão observando* tem condições sim de indexar e apostar com pouquíssimos jogos com IA alto.

 

Prever não sei, mas recomendo observar estes detalhes escondidos, igualmente os sub-sets de comprimento y atrasados para x acertos em n concursos consecutivos.

 

saudações,

Sphgf

Estamos apreciando bastante o desenrola a luz das previsões para filtros da "lotofácil" só o ocupo para um ordenamento ao andamento para que eu possa continuar entendendo o pouco que posso mas apreciando o avanço a cada passo.

O nível dos estudos me impede de qualquer inferência, mas fico na arquibancada, não pague ingresso, mas quero acompanhar o jogo.

Parabens a todos

 

  • Like 1
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...