Jump to content

Guy Novaes

Super VIP
  • Posts

    193
  • Joined

  • Last visited

  • Days Won

    6

Everything posted by Guy Novaes

  1. Sem problema, vai que outra pessoa esteja precisando de algo assim já pronto, né verdade? Creio que 0,0000000000001% da população mundial poderia dar uso para isso ai.. rs
  2. DixieJoe, Outra implementação do seu código, só que dessa vez converti em Java, que já possui o BigInteger nativo. Caso queira testar, execute no Java 1.8+. import java.math.BigInteger; public class principal { public static BigInteger gerarNextColex( BigInteger x ) // Gera Todas as Combinações em Ordem Co-Lexicográfica // a partir da primeira passada inicialmente na rotina // em geral, a primeira é = 0 // var x contem a primeira combinação { BigInteger r, z; r = x.and( x.not().add(BigInteger.ONE) ); x = x .add(r); if ( x.equals(BigInteger.ZERO) ) return x; z = x.and( ( x.not() ).add( BigInteger.ONE ) ); z = z.subtract(r); while ( ( z.and(BigInteger.ONE) ).equals(BigInteger.ZERO)) { z = z.shiftRight(1); } return x.or( z.shiftRight(1) ); } public static void main(String[] args) { BigInteger bi1; long start = System.currentTimeMillis(); bi1 = new BigInteger("32767"); // representa a primeira combinação de 15 números for (int i = 0; i < 3000000; i++) { bi1 = gerarNextColex(bi1); //System.out.println(bi1.bitCount()); } long elapsedTimeMillis = System.currentTimeMillis() - start; float elapsedTimeSec = elapsedTimeMillis/1000F; System.out.println(elapsedTimeSec); } } ------------------------------ O código acima passa pelas 3 milhões de combinações da Lotofácil em 1.1 segundos em um processador Core i7 de 3.4GHz, isso em Java. A classe BigInteger do Java trabalha com qualquer quantidade de bits, limitado apenas pela quantidade de memória da maquina virtual java. O bom é que esta classe já vem com o contador de bits navito e todas as outras funções para manipulação de bit.
  3. Pois é, é complicado... Outra vez um usuário de uma versão antiga do COLOGA perguntou como fazia para criar 10 jogos aleatórios quaisquer da Mega Sena no COLOGA e disse que o software não era para isso e sim para criar fechamentos onde o apostador tem uma determinada garantia caso certa condição ocorra... creio que até aqui você já percebeu que nada adiantou, sei lá, 1 ano de desenvolvimento de algo complexo que é gerar fechamento, para em menos de 1 minuto o cidadão apagar o software por não ser capaz de gerar o jogo de 10 combinações aleatórias que ele queria. As vezes fazemos algo complexo sem ao menos ver o que realmente o apostador quer, lógico que ele poderia ele ter ido na lotérica e ter pedido 10 surpresinhas, mas essa não era a necessidade dele. Bom, depois resolvi e coloquei a função para limitar a quantidade de jogos sem se preocupar tanto com a garantia de fechamento. Dificilmente a gente cria um tópico assim e cai de paraquedas ideias relevantes, melhor mesmo é garimpar buscando no fórum.
  4. Fico só de olho neste tópico... Alguns falam em velocidade, filtros, matrizes e esquecem o motivo principal, fazer um jogo possível de ser jogado. Procurem ou desenvolvam algo possível de ser jogado da melhor forma, seja apostando um jogo ou gastando o que for plausível de ser registrado. Deixe, por exemplo, o ININUGA rodando cerca de 5000 combinações e jogue ou se o quesito for velocidade instantânea vá na lotérica é peça para o atendente registrar 900 mil jogos. Moral da história: É certo que vai ganhar por causa do tempo gasto para gerar uma combinação ou porque usou uma combinação considerada grande? Obvio que não. Se o tópico for voltado ao estudo de como gerar ou analisar 1 bilhão combinações por segundo ai pode esquecer... Os computadores atuais "sofrem" e não consegue-se ver o término para executar um loop de 1 quadrilhão de repetição sem fazer absolutamente nada, imagina fazendo análises e cálculos complexos de geração de fechamentos... A sugestão para processamento de combinações enormes é que o interessado estude computação distribuída e desenvolva algo neste sentido, que é o que está faltando, ai poderemos sonhar em criar fechamentos enormes e sem fundamento para serem apostados... As combinações plausíveis de serem apostatas tem neste fórum aqui aos montes. Respondendo ao "O que se espera de um soft para loterias?", depende da necessidade, tem gente que só estuda fechamento compactado ao máximo e não joga, uns usam softwares lotéricos só para imprimir, tem gente que só vende matriz de fechamento geradas pelos softwares, outros aproveitam matrizes prontas e criam planilhas para substituir números e dizem ser a salvação e tem a maioria que não usa software. É escolher seu público ai e mandar ver no desenvolvimento ou não de um. Na dúvida faz um ai que atenda ou não esse povo todo...
  5. 1 - Adicione na uses: uses Velthuis.BigIntegers, Math 2 - Baixe e descompacte em uma pasta qualquer o BigInteger; 3 - Adicione o path das sources do BigInteger no caminho das Libs nas opções do Delphi.... Obs.: A BigInteger só funciona da versão XE em diante do Delphi... Nem perca tempo tentando colocar para rodar no Delphi 7 ou inferior.
  6. Como você pode notar, o código nem gera e nem grava, apenas passa pelas 50.063.860 de combinações sem fazer mais nada, isso levou 109 segundos aqui na maquina. Levou este tempo, pois o inteiro utilizado é do tipo BigInteger, que possui suporte ilimitado para a quantidade de bits... Ganha-se na quantidade de bits e perde um pouco da velocidade. Acredito que o quesito velocidade para processar uma Lotomania da vida só estará resolvido em computadores quânticos, enquanto isso, não há muito o que ser feito. Para processar a Lotofácil aqui, sem o uso do BigInteger, levou 0,01 segundo aproximadamente.
  7. DixieJoe, Caso necessite usar infinitos Bits com limitação sendo a memória do computador para suportar o tamanho do bit, use as funções disponíveis em https://github.com/rvelthuis/DelphiBigNumbers muitas estão escritas em Assembler. Funciona nas versões XE em diante, não chega a ser tão rápido como a INT32, mas para quem precisa, acredito servir. Fiz testes aqui, a meu ver satisfatórios. A execução do código abaixo levou 109 segundos para ser concluído sendo executado em um Intel Core I7 4ª de 3,4GHz. O código refere-se a passar por todas as combinações da Mega Sena. ----------------------------------------------- procedure GerarNext_Colex( var x : BigInteger ); // Gera Todas as Combinações em Ordem Co-Lexicográfica // a partir da primeira passada inicialmente na rotina // em geral, a primeira é = 0 // var x contem a primeira combinação var r, z: BigInteger; begin r := x AND ( ( NOT x ) + 1 ); x := x + r; if ( x = 0 ) then Exit; z := x AND ( ( NOT x ) + 1 ); z := z - r; while ( ( z AND 1 ) = 0 ) do z := z SHR 1; x := x OR ( z SHR 1 ); end; function SparseBitCount(X: BigInteger): Integer; begin Result := 0; while X <> 0 do begin Inc(Result); X := X and (X - 1); end; end; procedure TForm1.Button1Click(Sender: TObject); var x : BigInteger; myFile : TextFile; text : string; t1, t2, elapsedTime : TDateTime; cont,i: integer; startTime64, endTime64, frequency64: Int64; elapsedSeconds: single; begin x := trunc(power(2,6))-1; i := 0; AssignFile(myFile, 'Test.txt'); ReWrite(myFile); QueryPerformanceFrequency(frequency64); QueryPerformanceCounter(startTime64); while i < 50063860 do begin // cont := SparseBitCount(x); // writeln(myFile, x.ToString + ' ' + inttostr(cont)); GerarNext_Colex(x); inc(i); end; QueryPerformanceCounter(endTime64); elapsedSeconds := (endTime64 - startTime64) / frequency64; CloseFile(myFile); showmessage(floattostr( elapsedSeconds )); end; -----------------------------------------------
  8. Mario, Se você está perguntando para mim, eu não sei qual é a referência lotérica desse filtro, pois quem relatou foi o pauloeasy, acredito que ele só quis demonstrar algum tipo de "matriz" não com o intuito de ser usado em alguma modalidade lotérica específica.
  9. pauloeasy Entendo matriz em loteria como se fosse um modelo salvo de combinações que dela consegue-se gerar outras combinações bastando trocar os números. O que você informou ai, a meu ver, trata-se de filtro por posição, onde você limita a posição que cada número pode aparecer na combinação. No Editor de Filtros do COLOGA tem esse filtro com o nome "Limitar número por posição". Em anexo, segue esse filtro pronto para ser aberto e utilizado pelo Editor de Filtros do COLOGA. Renomeie a extensão dele para .clg, está .txt e abra-o pelo Editor de Filtros. filtrozona.txt
  10. Instale o VirtualBox que pode ser baixado do site https://www.virtualbox.org/ , ai você poderá instalar outros sistemas operacionais na mesma maquina sem alterar nada no seu Windows 10.
  11. Ai você resolve instalando uma maquina virtual com o Windows 7 só para rodar esses "trecos"....
  12. São muitas opções mesmo, 18-15-14-15=72,91% com 16 jogos... tou vendo que pode-se comprimir puxando o percentual de garantia para cima: 01 06 13 01 07 16 02 05 18 02 08 09 02 14 17 03 07 11 03 17 18 04 10 15 04 12 16 05 08 11 05 09 14 06 12 15 07 13 15 08 14 18 09 11 17 10 12 13
  13. Bem melhor... pois essa ai com os mesmos 16 jogos cerca 72,54%... As possibilidades de redução são boas... O Walt respondeu uma ai também com 15 jogos com 70%... muito bom....
  14. Mais uma matriz, dessa vez a 18-15-14-15=16=70%. Comparando com a matriz cheia 18-15-14-15=24=100%, houve uma redução de 24 jogos para 16 ficando 33,33% menor. O intuito de publicar isso é para tentar ver se alguém possui essa matriz com menos de 16 jogos, não é competição, é apenas tentar ver se é possível gerar isso com menos... 01 02 03 04 05 06 07 08 10 11 13 14 15 16 17 01 02 03 04 05 06 07 09 11 12 13 14 15 17 18 01 02 03 04 05 06 08 09 10 11 12 14 15 16 18 01 02 03 04 05 06 08 09 10 12 14 15 16 17 18 01 02 03 04 05 07 08 09 10 13 14 15 16 17 18 01 02 03 04 06 07 09 10 11 12 13 14 15 16 18 01 02 03 05 06 07 08 09 10 11 12 13 14 15 17 01 02 04 05 07 08 09 10 11 12 13 14 15 16 17 01 02 04 06 07 08 09 10 11 12 13 15 16 17 18 01 02 05 06 07 08 09 11 12 13 14 15 16 17 18 01 03 04 05 06 07 08 09 10 11 12 13 14 15 18 01 03 04 05 06 07 08 09 11 12 13 14 16 17 18 01 03 04 05 06 07 10 11 12 13 14 15 16 17 18 02 03 04 05 06 07 08 09 10 12 13 14 16 17 18 02 03 04 06 07 08 09 10 11 12 14 15 16 17 18 02 03 05 06 07 08 09 10 11 12 13 15 16 17 18
  15. RS... De fato não tem como saber o que o povo aposta... por isso coloquei que o prêmio geralmente sai para quem registra pouquíssimos jogos, por exemplo, em 50 milhões de combinações da Mega Sena, podemos considerar 1 jogo de 15 números (5005 combinações) como "pouquíssimos jogos", o universo jogado é muito pequeno. O mesmo vale para as 41 combinações ai que o nobre Fernandes20 comentou. Claro que nestes dois exemplos um tem mais chance que o outro, mas nenhuma chega a nem 1% para levar o prêmio máximo. A chance de ganhar continua muito pequena comparando com o universo total de possibilidades.... Se o apostador puder, ao invés de jogar apenas 1 combinação de 15, melhor apostar várias menores com números diferentes.
  16. Resposta difícil em? Pois a maioria dos ganhadores do prêmio máximo, que temos conhecimento, sai para apostadores de pouquíssimos jogos. A maioria nem sabe o que é fechamento. A chance é pequena em ambos os fechamentos, mas quanto mais puder repetir o fechamento com números diferentes, melhor. Sou da tese que para ganhar o apostador deve jogar sempre, nem que seja apenas 1 bilhete... A Loteria, quando honesta, é quem tem o poder de decidir quem vai ganhar e não o contrário, exceto quem joga todas as combinações...
  17. DixieJoe, Certeza, fechamentos 100% são caros, 70%+ está bom demais. 1 - A versão que publicaram no fórum só faz fechamentos 100% 2 - Não foi publicada ainda, quem sabe a galera ninja consiga pegar e disponibilizar... rs... Pretendo disponibilizar só quando estiver sem falhas com este novo módulo de fechamentos.
  18. Então Fernandes20, A questão é mais além, pois você está usando fechamentos 100% para determinado objetivo e que no caso desse ai 12-6-4-5=14 você obtém o prêmio de quadra se acertar 5 com 100% de certeza. Você está usando um fechamento maior para achar a probabilidade de acertar 4 e levar quadra... Já o método de gerar fechamentos com garantia abaixo de 100% visa gerar o total de bilhetes para se obter o fechamento mínimo necessário para atender os critérios propostos, que no caso de exemplo, fiz a matriz 12-6-4-5 com 50% de chance para quadra com 5 bilhetes. Veja a matriz 12-6-4-5=5=50% abaixo: 01 03 06 10 11 12 01 04 05 06 08 12 02 05 07 09 11 12 03 07 08 09 11 12 04 06 07 09 10 11 Nesse caso daria para você apostar 8x buscando quadra com 50% de chance caso acerte 5 números dos 12 gastando o valor similar. Entendeu a sutil diferença?
  19. Certeza de ganhar só jogando o fechamento completo 25-15-15-15, que não é essa a questão discutida aqui. O entendimento de jogar matriz não 100% é por ai mesmo... Apostar várias matrizes não 100% com números diferentes pode ser melhor que apostar apenas 1 completa e mais cara, não fiz os cálculos ainda para afirmar.
  20. Exemplo: Matriz 18-15-14-15 com 50% de cobertura = 10 jogos Objetivo ou problema em questão: Apostar fechamentos 100% as vezes é algo custoso, então porque não reduzir o este percentual de fechamento e tentar a sorte apostando menos bilhetes que fechamentos 100% ou até menos que simplesmente removendo um percentual incerto de um fechamento completo sem saber se está eficaz no quesito quantidade de bilhetes? Considerações: Sabe-se que a menor matriz possível para o fechamento 18-15-14-15 100% possui 24 jogos, para quem não sabe o que isso significa, seria o apostador jogar com 18 números e buscar a premiação de 14 pontos caso acerte 15 números dentro dos 18 escolhidos com 24 bilhetes de 15 números, isso com 100% de certeza... Bom, se a gente pegar essa matriz e digamos, de forma aleatória, tirar 12 jogos, ficariamos com 12 jogos, que na teoria seria um fechamento com 50% de cobertura para os 14 pontos acertando 15.... Mas a intenção de criar novas matrizes com percentual de garantia abaixo dos 100% não é simplesmente remover um percentual de combinações de um fechamento 100% e sim gerar o menor número possível de combinações para atender a fechamentos não 100% ... Eis então uma matriz que com 10 jogos permite cercar 14 pontos com o critério de 50% de chance acertando 15 em 18 pontos... será que é possível encontrar essa matriz de 50% de chance de acerto com menos de 10 jogos? 01 02 03 04 05 06 07 09 10 11 12 13 15 17 18 01 02 03 04 05 06 08 10 11 12 13 14 16 17 18 01 02 03 04 05 07 08 09 10 12 13 14 15 17 18 01 02 03 04 07 09 10 11 12 13 14 15 16 17 18 01 02 03 05 06 07 08 09 10 11 12 13 14 16 17 01 02 04 06 07 08 09 10 12 13 14 15 16 17 18 01 03 04 05 06 08 09 10 11 12 13 14 15 16 17 01 03 05 06 07 08 10 11 12 13 14 15 16 17 18 02 03 04 05 06 07 08 09 10 11 14 15 16 17 18 02 03 04 05 06 07 08 09 11 12 13 14 15 16 18 Então agora sabe-se que como o fechamento está 50% coberto com esses 10 jogos nos critérios que já foram expostos, é necessário entender que para acertar os 14 pontos terá que, primeiro acertar os 15 pontos entre os 18 e segundo, contar com a sorte do "cara e coroa" para ter o prêmio pretendido.... Isso é bom?
  21. Giovana, Realmente é uma falha no processamento deste tipo de fechamento e não limitação na arquitetura... Neste caso a mensagem que aparece não faz sentido e necessita de correção. Mas para esclarecer, neste caso ai, o programa iria gerar apenas uma combinação, visto que você está afirmando para ele que acerta 20 números ao colocar o valor 20 no campo "Números fixos" que é o mesmo total que está no campo "Garantia pretendida".... Seria isso que você quer, gerar apenas uma combinação? Entendo perfeitamente que você quer algo que gere várias combinações com um determinado número de dezenas fixas em todos os bilhetes... mas não é o que o COLOGA possui, há diferença no entendimento sobre números fixos em fechamentos e combinações quaisquer. Quem sabe em uma versão futura o software seja adaptado para não considerar acerto em números fixos, ai poderia-se ter fixos no entendimento geral onde daria para usar até 100 fixas, pois nunca se sabe o que o apostador quer, não é verdade?
  22. Jimmy, Agradeço o espaço, seu fórum é o melhor e maior que temos... Parabéns! Foi daqui que alguém sugeriu a opção "Quantidade de prêmios" para fechamentos, onde o apostador pode escolher a quantidade de prêmios quer ganhar caso acerte o fechamento, foi sensacional poder ter criado isso partindo de uma sugestão.
  23. É o que disse, essa versão que disponibilizaram não está completa.
  24. Dá trabalho fazer sim, pois tente imaginar como se faz do zero para compactar matrizes sem a perda de garantia de fechamento sem ter nenhum conteúdo de estudo disponível para isso ou ninguém para ajudar a chegar um algorítimo ou cálculo para tal... Para se ter uma noção do trabalho, chamei matemáticos para ajudar a criar tal função/cálculo e todos me chamaram de maluco dizendo que isso não existe, diziam que era perda de tempo... Bom, ai deixei para lá e após quebrar a cabeça, num dia de ócio, deu um estalo e coloquei em prática tal função para compactar matrizes, não está o ideal, mas faz compactação sem falhas... O pessoal que se dedica a criar matrizes de fechamento bem compactadas estão de parabéns.... Realmente trata-se de algo bem complexo...
  25. Pois Giovana, Ainda tem isso, o software possui limite pela arquitetura computacional que foi desenvolvido... Dependendo do fechamento que for solicitado, essa mensagem pode aparecer estragando com a "brincadeira" do apostador. Se possível informe os valores dos campos que você usou, ai posso analisar se é uma falha ou se trata de uma limitação da arquitetura mesmo....
×
×
  • Create New...