Mega Sena da Virada

Oi gente, tudo bem com vocês?
Bom, quem acompanha meu blog a mais de um ano, já sabe que no ano novo eu aposto na mega sena e também sempre posto alguma coisa aqui, pra ajudar as pessoas a decidirem em qual número apostar também né...rs
Já trouxe um código em javascript pra gerar números aleatórios, também já trouxe um código que você colocava no final do arquivo de resultados da lotofácil(que dá pra adaptar pra mega sena) e contava quais números mais tinham saído durante determinado período...
Esse ano eu melhorei um pouco o código e além de computar os números que já saíram, ele também analisa combinações, ou seja, números que costumam sair juntos uns com os outros... Assim você pode escolher 3 duplas de números que mais saem, ou um trio, uma dupla e um único número, enfim... É só usar a criatividade...
O lado bom de ter esse código é que você pode ver quais são os números que mais saem e decidir se quer apostar neles ou nos "azarões"...
No final do post eu vou colocar imagens com os resultados que obtive com meu código, mas primeiro vou colocar meu código...
Se você quiser só ver algumas estatística pra decidir em que apostar  e não quer saber como eu fiz pra gerar isso, vá pro fim do post! rsrs

Gerando todas combinações 

Então gente, essa parte eu optei em fazer por php, porque o php executa por mais tempo que o javascript, e com o php eu consigo gerar um arquivo com os resultados obtidos... Enfim, veja meu código comentado abaixo...

<?php
set_time_limit(0); // pra deixar o limite de execução do código infinito

$numeros=60; // setando o numero máximo

for($c0=1;$c0<=$numeros;$c0++){ // c0 começa em 1 e termina quando atingir o valor de $numeros, $c0 será o primeiro número da combinação

for($c1=($c0+1);$c1<=$numeros;$c1++){ //c1 começa no $c0 atual, acrescido de 1, para gerar as combinações 1-2 , 1-3, 1-4, 1-5 ... Se não acrescentar 1 vai gerar a combinação 1-1...

$combinacao=array($c0,$c1); // junta os numeros de $c0 e $c1 em um array
sort($combinacao); // organiza o array por ordem crescente(do menor pro maior)
file_put_contents('./duplas.htm','<span id="'.join('-',$combinacao).'">'.join('-',$combinacao).' = <font>0</font></span><br>', FILE_APPEND); // abre o arquivo duplas.htm, e escreve a nova combinação no final dele

// o próximo looping for, faz a mesma coisa que o looping acima, porém com a combinação de mais um número, pra formar o trio, e depois salvar no arquivo trios.htm
for($c2=($c1+1);$c2<=$numeros;$c2++){
$combinacao=array($c0,$c1,$c2);
sort($combinacao);
file_put_contents('./trios.htm','<span id="'.join('-',$combinacao).'">'.join('-',$combinacao).' = <font>0</font></span><br>', FILE_APPEND); 
}

}

}
?>

Bom galera, não sei se vai dar certo esse código, porque quando eu fiz fiz gerando primeiro só o arquivo de duplas e depois gerei só o de trios... No caso se você tentar fazer assim e não der certo, tira a parte de $combinacao, até FILE_APPEND); de um dos dois, depois volta e apaga do outro pra gerar um outro arquivo...rs
Ah, sem esquecer de que pra executar esse arquivo php você vai precisar ter um xamp no seu pc, eu na verdade nem uso o xamp, prefiro o easy php, mas tanto faz o que você vai usar, o que importa é ter o apache pra poder rodar o php... ^^

Gerando estatísticas

Bom, vamos a parte mais chatinha agora...rs
O arquivo que você baixa do site da caixa, é imenso, afinal tem os sorteios de todos os tempos...
Esses arquivos que você acabou de gerar também são imensos...
Ou seja, se você for tentar dar ctrl+c e ctrl+v pra juntar tudo em um só tem bastante chance do seu pc travar...rsrs
O que eu fiz foi usar o notepad++, pois ele é mais leve que o dreamweaver e aguentou melhor a pressão do arquivo grande...
Depois eu renomeei o arquivo de resultados da mega, pra ele virar .php, e no final da tabela de resultados coloquei o código que vou passar pra vocês...

</table>
<?php
// você só precisa transformar o arquivo em php, pra poder colocar o conteúdo dos arquivos duplas e trios dessa forma...
echo '<div id="sozinhos"><b>Sozinhos</b><br></div><br><br>';
echo '<div id="duplas"><b>Duplas</b><br>'.file_get_contents('./duplas.htm').'</div><br><br>';
echo '<div id="trios"><b>Trios</b><br>'.file_get_contents('./trios.htm').'</div><br><br>';
?>
</body>


<script>
objs=document.getElementsByTagName("td");
numeros=Array();
for(i=0;i<60;i++){
numeros[i]=Array((i+1).toString(),0); //cria um array com 60 itens, cada item é um array que tem o número e o número de vezes que ele foi sorteado
}

datainicial='01/01/2014'; //aqui você coloca quando quer que a pesquisa dos resultados inicie
bola=0; // conta quantas bolas foram tiradas no sorteio atual
bolas=Array(); //cria um array pra guardar as bolas que foram tiradas no sorteio atual

for(i=objs.length-14;i>=0;i--){

if(objs[i].innerHTML.length==2 && parseInt(objs[i].innerHTML)<=60){ //verifica se o número é de dois dígitos e se é menor ou igual a 60

numeroatual=(parseInt(objs[i].innerHTML)-1); //pega o valor da tabela e converte em numeral e diminui 1, pois os índices do Array começam em 0 e a megasena começa em 1

numeros[numeroatual][1]+=1; //sabendo o índice do número sorteado é adicionado um ponto a ele

bolas[bola]=parseInt(objs[i].innerHTML); // adiciona o número sorteado a array que guarda os números do sorteio atual
bola++; // contabiliza mais uma bola sorteada
}

if(bola==6){ //quando são sorteadas 6 bolas o código faz as combinações possíveis e verifica se chegou a data limite, se sim ele para, se não, continua...

bolas.sort(); // organiza os números sorteados em ordem crescente

// incio combinações
// o código abaixo é parecido com o código de combinações que eu fiz acima, mas em vez das combinações serem de 1 à 60, as combinações só vão usar os 6 números que foram sorteados no sorteio atual, além disso esse código é em javascript e o outro era em php...
for(c=0;c<bolas.length;c++){

for(c2=(c+1);c2<bolas.length;c2++){

combinacao=[bolas[c],bolas[c2]].sort(function(a, b){return a-b}).join("-");// fazendo combinação de 2 números
if(document.getElementById(combinacao)){
document.getElementById(combinacao).getElementsByTagName('font')[0].innerHTML=parseInt(document.getElementById(combinacao).getElementsByTagName('font')[0].innerHTML)+1; // vai contabilizar que a combinação de dois números foi sorteada
}else{
console.log(combinacao);
}

for(c3=(c2+1);c3<bolas.length;c3++){

combinacao=[bolas[c],bolas[c2],bolas[c3]].sort(function(a, b){return a-b}).join("-"); // fazendo combinação de 3 números
if(document.getElementById(combinacao)){
document.getElementById(combinacao).getElementsByTagName('font')[0].innerHTML=parseInt(document.getElementById(combinacao).getElementsByTagName('font')[0].innerHTML)+1; // vai contabilizar que a combinação de três números foi sorteada
}else{
console.log(combinacao);
}

}

}

}
//fim de combinações

i--;
if(objs[i].innerHTML==datainicial){ // checa se a data limite chegou, se chegou para a checagem
break;
}else{
i-=13;
bola=0; // zera o número de bolas sorteadas para contar o novo sorteio
bolas=Array(); // zera o array de bolas sorteadas para contar o novo sorteio
}
}

}


numeros.sort(function(a,b){return b[1]-a[1]}); // organiza os números sozinhos, os mais sorteados primeiro e os menos por último...
document.getElementById('sozinhos').innerHTML+=numeros.join("<br>"); // imprime os números sorteados na sua div...


// começa a retirar as combinações que não aconteceram nenhuma vez
zerados=document.getElementsByTagName('font');
for(i=0;i<zerados.length;i++){
if(zerados[i].innerHTML=='0'){
ob=zerados[i].parentNode;
ob.parentNode.removeChild(ob.nextSibling);
ob.parentNode.removeChild(ob);
i--;
}
}
// fim de limpeza de combinações zeradas

// começa a reorganizar as duplas, pelo número de vezes que elas foram sorteadas
combinacoes=document.getElementById('duplas').getElementsByTagName('font');
for(i=1;i<combinacoes.length;i++){ // i começa em 1, para poder chegar se 0 é um número mais ou menos vezes sorteados que 1
v=parseInt(combinacoes[i].innerHTML); // pega o primeiro valor do número a ser comparado

for(c=(i-1);c>=0;c--){
v2=parseInt(combinacoes[c].innerHTML); // pega o segundo número à ser comparado, que é no mínimo, um número antes do primeiro valor a ser comparado
if(v>=v2){ // se o primeiro valor for mais ou igual o segundo
if(c==0 || parseInt(combinacoes[(c-1)].innerHTML)>v){ // se antes do segundo número não houver outro, ou se o primeiro valor for menor que ele
ob1=combinacoes[i].parentNode; // pega o elemento do primeiro valor
ob1.parentNode.removeChild(ob1.nextSibling); // remove a quebra de linha depois do primeiro valor
ob2=combinacoes[c].parentNode; // pega o elemento do segundo valor
ob2.parentNode.insertBefore(ob1,ob2); // insere o primeiro elemento pegado, antes do segundo elemento
ob2.parentNode.insertBefore(document.createElement('br'),ob2); // insere uma quebra de linha, antes do segundo elemento pegado também
break;
}
}else{
break;
}

}
}
// fim da reorganização das duplas

// o código abaixo faz a mesma coisa que o código acima, reorganizando os trios...

combinacoes=document.getElementById('trios').getElementsByTagName('font');
for(i=1;i<combinacoes.length;i++){
v=parseInt(combinacoes[i].innerHTML);

for(c=(i-1);c>=0;c--){
v2=parseInt(combinacoes[c].innerHTML);
if(v>=v2){
if(c==0 || parseInt(combinacoes[(c-1)].innerHTML)>v){
ob1=combinacoes[i].parentNode;
ob1.parentNode.removeChild(ob1.nextSibling);
ob2=combinacoes[c].parentNode;
ob2.parentNode.insertBefore(ob1,ob2);
ob2.parentNode.insertBefore(document.createElement('br'),ob2);
break;
}
}else{
break;
}

}
}

</script>

Bom galera, depois de todos esses códigos, e 3 dias pra chegar neles(porque antes de chegar nele, meu pc ficava processando o javascript e depois travava...rs)
Finalmente cheguei a um resultado...
O resultado que vou postar pra vocês é contando os jogos desde o começo do ano...
E não conferi contando manualmente, talvez ainda haja algum erro no código, mas acho que já dá pra ter uma ideia...rs

Resultados

Os resultados estão organizados por fileiras, sendo que a fileira da esquerda é a que tem números maiores, e a da direita é a que tem os menores...
As combinações estão representadas da seguinte forma 1-2-3 = 10 , isso significaria que a combinação 1,2,3, saiu 10 vezes...
Tive que colocar os resultados em imagem, porque em texto estava travando o blog...
Também retirei dos resultados as combinações que só foram sorteadas 1 vez...
Vamos aos resultados...













Comentários

Postagens mais visitadas deste blog

Stayfilm - Avaliação

Como zerar Drag Racing do Android

Cordão em crochê