bitwizardry
-
Posts
105 -
Joined
-
Last visited
-
Days Won
1
Content Type
Profiles
Forums
Downloads
Posts posted by bitwizardry
-
-
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.
-
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.
Sobre a sua sugestão de filtro baseado nos ultimos 10 concursos, achei interessante. Vou implementar aqui e depois te informo os resultados.
- 1
-
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:
- 1
- 1
-
1 hora atrás, suelsilva disse:
Os filtros devem garantir um acerto de 0,95% independente de qualquer circunstâncias, é isso?
Exatamente, mas não estou me baseando em 0.95% dos resultados anteriores da loteria, estou me embasando no universo total das combinações, são coisas completamente diferentes.
- 1
-
2 horas atrás, DixieJoe disse:
Mas onde entra a quantidade de valores a serem usados em cada filtro?
Você quer determinar os valores de min e max de cada filtro?
Seriam os Intervalos de Confiança?
https://pt.wikipedia.org/wiki/Intervalo_de_confiança
2 horas atrás, DixieJoe disse:Seriam os valores dentro dos 0,95% de cobertura individual por filtro?
Sim, 0.95% de cobertura em cada filtro, individualmente.
- 1
-
25 minutos atrás, DixieJoe disse:
0,88 * 0,88 * 0,88 * 0,88 .... por 20 filtros = 0,078 (ou seja menos de 8%, quando esperávamos 88%).
Um logarítmo pode facilitar essas contas, desde que mudemos a pergunta.
A pergunta deveria ser: "Se pretendo apostar na Lotofácil com x bilhetes, quantos filtros de y% cobertura eu deveria aplicar em todas as combinações possíveis?"
Observe que são 3 variáveis envolvidas:
c = Universo total de combinações
m = Qtd de bilhetes apostados
p = Cobertura por filtragem
O logarítmo seria: Math.Log(m / c, p)
Na prática: se você quisesse apostar em 20 bilhetes e fosse aplicar uma bateria de filtros de 0.95% de cobertura, quantos filtros seriam necessários?
Math.Log(20/ 3.2MI, 0.95) = 234 filtros aproximadamente...
- 1
- 1
-
57 minutos atrás, loteria2022 disse:
Bom pra sua primeira pergunta. Não infelizmente 0 significa que o jogo simples Gerado teve 0 acertos e para sua segunda pergunta eu usei uma biblioteca mais construí o código todo principalmente a parte de testes tive que fazer do 0
Amigo, você poderia explicar por gentileza como você treinou a rede? Qual função de ativação foi utilizada? Qual linguagem você programou?
A única coisa que entendi pelo print são os acertos de 0 a 6 dezenas e suas respectivas ocorrências.
-
2 horas atrás, filipe200821 disse:
Compartilha ai com a gente
@Rodolfo822 já postou a lista atualizada.
-
52 minutos atrás, filipe200821 disse:
No entanto isso exigiria um grande poder computacional para esse tipo de análise.
Nem tanto, se você souber processar da forma correta, em "baixo nível" e em paralelo.
Essa é a combinação que mais acertou 11 pontos:
01,03,04,05,06,09,11,13,17,18,20,22,23,24,25 - 222 vezes
E essa é a que mais acertou 11 ou mais pontos:
01,02,03,04,05,07,10,11,13,17,18,20,23,24,25 - 258 vezes
A combinação campeã dos 11 pontos em ocorrencias representa 0,1243% do histórico, pouco acima do valor esperado
Se você quiser as 10 mais ou 20 mais, eu posto aqui.
- 1
-
http://ljcr.dmgordon.org/show_cover.php?v=40&k=15&t=6
Essa é a menor encontrada nos últimos 20 anos. 2958 linhas.
- 2
-
Bom dia amigos,
Desenvolvi uma simples função em .NET que retorna a matriz do repositório La Jolla apenas inserindo os parâmetros.
Se alguém estiver interessado, esse é o código:
vb.NET
Public Shared Function LaJollaCovering(v As Integer, k As Integer, t As Integer) As String
' - http://www.dmgordon.org/cover/
Dim c() As String = {"v=" & v.ToString, "k=" & k.ToString, "t=" & t.ToString}
Dim url As String = "http://ljcr.dmgordon.org/show_cover.php?" & String.Join("&", c)
Dim web = New HtmlAgilityPack.HtmlWeb()
Dim doc = web.Load(url)
Dim htmlNodes = doc.DocumentNode.SelectNodes("//body/pre")Return htmlNodes.Nodes.First.InnerText
End Function
C#
public static string LaJollaCovering(int v, int k, int t) {
// - http://www.dmgordon.org/cover/
string[] c = {"v=" + v.ToString(), "k=" + k.ToString(), "t=" + t.ToString()};
string url = "http://ljcr.dmgordon.org/show_cover.php?" + string.Join("&", c);
var web = new HtmlAgilityPack.HtmlWeb();
var doc = web.Load(url);
var htmlNodes = doc.DocumentNode.SelectNodes("//body/pre");return htmlNodes.Nodes.First.InnerText;
}
É necessário instalar o Html Agility Pack: https://www.nuget.org/packages/HtmlAgilityPack/
A função retorna a matriz em texto simples, para manipulá-la é preciso fazer o split entre as linhas e depois entre os elementos.
- 3
-
Acredito que seja isso que você quer:
LINHA 1 | 04 | 06 | 01 | 01 02 03 04 05 06 07 08 09 10
LINHA 2 | 04 | 06 | 01 | 11 12 01 14 15 16 17 18 19 20
etc...
Agora basta substituir as dezenas as quais você quiser...
-
@leandrolff quase tudo em loterias é cilada, a começar pela probabilidade a nosso favor.
-
5 horas atrás, Dr. Loteria disse:
acertado com ele varios premios de 15 e incontaveis de 14 pontos
Pergunte a você mesmo: imagine se você tivesse desenvolvido um esquema que acertasse 15 pontos várias vezes e incontáveis vezes de 14 pontos, mas que o esquema gerasse uma grande quantidade de bilhetes demandando um alto investimento, o que você optaria?
1 - Vender o esquema pela net, por R$ 19,90.
2 - Reunir uma quantidade de apostadores, conhecidos ou não, com o mesmo interesse, depois de provada a eficiência do método, para levantar os fundos necessários e apostar.
Qualquer pessoa, intelectualmente honesta, escolheria a segunda opção, caso a premissa inicial fosse verdadeira.
Como não é, e não precisa ser muito inteligente para se chegar a essa conclusão, trata-se de apenas mais um "João de Deus" das loterias vendendo gato por lebre.
- 3
-
A URL do La Jolla foi atualizada novamente. O site é basicamente o mesmo, apenas o layout um pouco diferente.
- 1
-
4 horas atrás, Zangado disse:
pode ser interessante uma dll para trabalhar com excel
Poderia funcionar, mas perderia performance de qualquer maneira.
Essas são as 4 funcões principais que necessariamente deveriam estar na dll:
calculateOneCovering()
randomNeighbor()
computeNeighbor()
acceptNeighbor()
Todas elas usam os valores das variáveis globais que fazem parte do programa, e que não acessíveis de fora do programa, a não ser que as passemos a partir do programa cliente, vba ou vb.net/c#. Fora isso, o programa usa ponteiros (pointers) para praticamente tudo, nesse caso vc teria que passar o array como referencia ByRef juntamente com o lenght, tudo pre-calculado. Resumindo, um baita trabalho. Muito mais fácil trabalhar direto de dentro do programa.
-
8 horas atrás, MOC disse:
Qual programa você desenvolveu?
O próprio programa. Transcrevi para c++ e fiz várias pequenas alterações, só para uso pessoal.
Se você quiser um ponto de partida, essa é a melhor fonte disponível.
-
40 minutos atrás, MOC disse:
Alguém tem algum exemplo de código para gerar matrizes? vba, java, qualquer coisa?
Se vc quiser em linguagem C pura, aqui está: http://www.tcs.hut.fi/Software/old/cover/cover.zip
Código super confuso e desorganizado, levei uns 6 meses só para transpô-lo para OOP, mas funciona muito bem.
- 1
-
A mensagem diz que 2,5 não é um valor floating point. Em programação, floating point nada mais é do que um número decimal.
Nesse caso, desconfio que a conversão da string "2,5" para o valor 2,5 é que está retornando esse erro.
Por acaso vc alterou algum valor na aba "simulação e conferencia" ou em "configurações"?
Se sim, tente como "2.5" ao invés de "2,5". Deve resolver.
- 1
-
c(15,9,8,9) = 68 (74,72%)
No limite da cobertura.
01 02 03 04 05 06 08 12 13
01 02 03 04 05 07 08 09 14
01 02 03 04 05 10 11 12 14
01 02 03 04 06 07 09 11 12
01 02 03 04 06 07 10 13 14
01 02 03 04 08 09 10 11 13
01 02 03 05 06 07 08 10 11
01 02 03 05 06 07 09 13 15
01 02 03 05 08 09 10 12 15
01 02 03 05 08 11 13 14 15
01 02 03 06 07 08 12 14 15
01 02 03 06 09 10 11 14 15
01 02 03 07 10 11 12 13 15
01 02 04 05 06 09 12 14 15
01 02 04 05 06 10 11 13 15
01 02 04 05 07 08 11 12 15
01 02 04 05 07 09 10 12 13
01 02 04 06 07 08 09 10 15
01 02 04 07 09 11 13 14 15
01 02 04 08 10 12 13 14 15
01 02 05 06 07 11 12 13 14
01 02 05 06 08 09 10 13 14
01 03 04 05 06 08 10 14 15
01 03 04 05 06 09 11 13 14
01 03 04 05 07 09 10 11 15
01 03 04 05 07 12 13 14 15
01 03 04 06 07 08 11 13 15
01 03 04 06 09 10 12 13 15
01 03 04 08 09 11 12 14 15
01 03 05 06 07 09 10 12 14
01 03 05 07 08 09 11 12 13
01 03 06 08 10 11 12 13 14
01 03 07 08 09 10 13 14 15
01 04 05 06 08 09 10 11 12
01 04 05 07 08 10 11 13 14
01 04 06 07 08 09 12 13 14
01 04 06 07 10 11 12 14 15
01 05 06 07 08 09 11 14 15
01 05 06 07 08 10 12 13 15
01 05 09 10 11 12 13 14 15
02 03 04 05 06 07 11 14 15
02 03 04 05 07 08 10 13 15
02 03 04 05 09 11 12 13 15
02 03 04 06 08 09 13 14 15
02 03 04 06 08 10 11 12 15
02 03 04 07 08 11 12 13 14
02 03 04 07 09 10 12 14 15
02 03 05 06 08 09 11 12 14
02 03 05 06 10 12 13 14 15
02 03 05 07 09 10 11 13 14
02 03 06 07 08 09 10 12 13
02 04 05 06 07 08 09 11 13
02 04 05 06 07 08 10 12 14
02 04 05 08 09 10 11 14 15
02 04 06 09 10 11 12 13 14
02 05 06 07 09 10 11 12 15
02 05 07 08 09 12 13 14 15
02 06 07 08 10 11 13 14 15
03 04 05 06 07 08 09 12 15
03 04 05 06 07 10 11 12 13
03 04 05 08 09 10 12 13 14
03 04 06 07 08 09 10 11 14
03 05 06 08 09 10 11 13 15
03 05 07 08 10 11 12 14 15
03 06 07 09 11 12 13 14 15
04 05 06 07 09 10 13 14 15
04 05 06 08 11 12 13 14 15
04 07 08 09 10 11 12 13 15 -
Reconheço que eles são feras mesmo. Vou ver se consigo otimiza-la, haja memória...
- 1
-
5 minutos atrás, BigMax disse:
Nino Aspesi tem uma ótima redução da matriz 60,6,5,6=437437 linhas (100%)
Max, o Aspesi reduziu 53.000 linhas em 1 dia?
Os italianos devem ter desenvolvido um software diferente. O cover32 não realiza essa proeza tão rapidamente assim.
-
23 minutos atrás, DixieJoe disse:
Pergunta para o bitwizardry: isso tem ajudado?
Não Dixie, não ajuda em nada. Eu só quis mostrar como é o funcionamento do seed de qualquer código pseudorandom.
Aliás, definir a "qualidade" da aleatóriedade, tbm é algo subjetivo. Alguns podem afirmar que quanto mais dispersos os números uns dos outros, por um determinado período, maior qualidade, outros, afirmam justamente o contrário.
Ex.: Imagine um código que tenha gerar 5 numeros aleatórios entre 1 e 100 (repetidos ou não)
No primeiro output, vc tem: 4 ,23, 50, 65, 69
No segundo vc tem: 11,11,29,31 92
Qual sequencia seria a "melhor"? de mais aleatóriedade? Impossível dizer.
Houve uma discussão sobre isso nessa conferencia c++. O fato é: seja lá qual for o método, não ajuda em nada em loteria.
-
56 minutos atrás, IGFX disse:
Oi cara, pode me ensinar a baixar o XORShift ?
Não há executável, apenas código fonte. (em c#)
Você precisa "clonar" o projeto para a sua máquina, compilar, criando um .exe e uma dll, fazer a referencia da dll no seu .exe e rodar os exemplos que o cara escreveu. Se você não é programador, fica difícil entender. Mas posso te mostrar algo parecido sem que vc tenha que compilar, siga esses passos:
1 - Acesse esse site: https://en.cppreference.com/w/cpp/algorithm/sample
2 - No campo onde está o código, ao lado esquerdo, em cima, há um botão escrito "Run this code", clique nele.
3 - Cole esse código por cima do anterior:
#include <iostream>
#include <random>
#include <string>
#include <iterator>
#include <algorithm>
#include <chrono>
int main() {
auto seed = 0;
std::mt19937 generator(seed);
std::vector<int> in = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25};
std::vector<int> out;
std::sample(in.begin(), in.end(), std::back_inserter(out), 15, generator);for (auto x : out) {
std::cout << x << " ";
}
}4 - Agora clique em em "Run", e pronto. Veja a saída embaixo dessa telinha: 1 3 6 8 9 10 13 14 16 17 19 20 22 23 24
Agora altere o valor do seed e veja a diferença, nessa linha: auto seed = 1;
Coloque 1, 2 3... etc... qualquer numero de 0 até 9223372036854775807 e observe os diferentes outputs.
Se der alguma zebra, pressione F5 e siga os passos novamente.
Previsão para filtros da lotofacil?
in LotoFacil
Posted
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.