Jump to content

As Cadeias de Markov


Evaldo Elisio

Recommended Posts

filtro, intersecçao( cruzamento de linhas e colunas) filtro intervalos vazios  por lina e colunas

padroes de repetiçao e atraso por coluna na ordem crescente, terminaçoes( nao as nervosas ) mas as de 0 a 9

controle da semente( quantidade de sorteio apartir do ultimo aonde para o proximo tem todas as dezenas

exemplo=lotofacil em 5,6 sorteio já tem todas as dezenas tipo ciclo,

 padroes basicos, deltas vertical e horizontal. frequencias  

Link to comment
Share on other sites

1 hora atrás, pauloeasy disse:

Aqui está um gerador de cadeia de Markov on-line, feito por 
Stoopendaal: Markov Chains Generator Lottery Games 2.0

 

Link
http://www.intelbet.somee.com/Default.aspx

 

Markov Chains Generator Lottery Games 2.0
Carregar dados do histórico da loteria (Copiar e colar na caixa de texto abaixo)
Concurso mais antigo no topo.
Os números (dígitos) devem me separar por um sinal (vírgula, espaço, etc ...)
Máximo de 10.000 linhas (resultados do histórico da loteria) permitidos.

pauloeasy,

 

Você conseguiu entender como usar isso?

Link to comment
Share on other sites

27 minutos atrás, DixieJoe disse:

pauloeasy,

 

Você conseguiu entender como usar isso?

Eventualmente faço alguns testes, não tive bons resultados.
Mas os numeros gerados potencializam resultados futuros próximos.
Vou tentar executar mais alguns backtests em todo tipo de loteria.
Darei retorno em breve.

Link to comment
Share on other sites

Em 2/7/2017 at 13:26, khundalini disse:

Alguém pode me ajudar a montar o algoritmo para cálcular o CSN? Já tentei os algoritmos mencionados neste post, mas até agora sem sucesso. E se possível, queria uma explicação sobre o que é essa tal busca binária. Grato.

Qual linguagem vc programa?

Link to comment
Share on other sites

  • 2 years later...

Um algoritmo com IA em PHP  que eu fiz para usar os resultados antigos da caixa e gerar apostas baseado no suposto princípio de que os números tendem a igualar a quantidade de ocorrências ao longo do tempo:







 

<?php
// http://loterias.caixa.gov.br/wps/portal/loterias/landing/megasena
ini_set('display_errors', true);
error_reporting(E_ERROR ^ E_DEPRECATED);
set_time_limit(999999);
$url = 'http://www1.caixa.gov.br/loterias/_arquivos/loterias/D_megase.zip';
$pasta = 'dat';
$file = 'configuracoes.php';
$qtd_jogos = 0;
$qtd_apostas = 1;
$numeros_por_jogo = 6;
$total = 60;
$erros = [];
$ocorrencias = [];

if (!$_GET)
{
    if (file_exists($pasta . "/" . $file))
    {
        require($pasta . "/" . $file);
    }
}

else
{
    $url = $_GET['url'];
    $qtd_apostas = max($_GET['qtd_apostas'], 1);
    $numeros_por_jogo = max($_GET['numeros_por_jogo'], 6);
    $qtd_premios_acumulados = 0;
    $qtd_ganhadores = 0;
    
    if (!is_dir($pasta))
    {
        if (!mkdir($pasta))
        {
            $erros[] = 'Falha ao criar o diretorio para guardar os arquivos da Caixa Economica';
        }
    }
    if (is_dir($pasta))
    {
        $conteudo_arquivo_configuracoes = 
            '<?php' . PHP_EOL . 
                '$url = "' . $url . '";' . PHP_EOL . 
                '$qtd_apostas = ' . $qtd_apostas . ';' . PHP_EOL . 
                '$numeros_por_jogo = ' . $numeros_por_jogo . ';' . PHP_EOL . 
            '?>';
        if (!file_put_contents($pasta . "/" . $file, $conteudo_arquivo_configuracoes))
        {
            $erros[] = 'Falha ao gravar as configuracoes';
        }
    }
    
    $numeros_validos = [];
    for ($x = 1; $x <= $total; $x++)
    {
        $numero = sprintf("%0" . strlen($total) . "d", $x);
        $ocorrencias[$numero] = 0;
        $numeros_validos[] = $numero;
    }
    
    if (function_exists('curl_init'))
    {
        $useragent = $_SERVER['HTTP_USER_AGENT'];
        $timeout = 120;
        $dir = dirname(__FILE__);
        $cookie_file = $dir . '/cookies/' . md5($_SERVER['REMOTE_ADDR']) . '.txt';
        $ch = curl_init($url);
        curl_setopt($ch, CURLOPT_FAILONERROR, true);
        curl_setopt($ch, CURLOPT_HEADER, 0);
        curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);
        curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
        curl_setopt($ch, CURLOPT_ENCODING, "");
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_AUTOREFERER, true);
        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
        curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
        curl_setopt($ch, CURLOPT_MAXREDIRS, 10);
        curl_setopt($ch, CURLOPT_USERAGENT, $useragent);
        curl_setopt($ch, CURLOPT_REFERER, 'http://www.google.com/');
        $content = curl_exec($ch);
        if (curl_errno($ch))
        {
            $erros[] = 'Falha ao consultar o arquivo zip. Erro CURL: "' . curl_error($ch) . '"';
        }
        curl_close($ch);
    }
    else
    {
        $erros[] = 'O PHP não consegue extrair os arquivos da caixa';
    }
    
    if (isset($content))
    {
        file_put_contents($pasta . "/html.zip", $content);
        $zip = new ZipArchive();
        $ok_zip = $zip->open($pasta . "/html.zip");
        if ($ok_zip)
        {
            $zip->extractTo($pasta . "/zip");
            $entradas = scandir($pasta . "/zip");
            foreach ($entradas as $entrada)
            {
                if ($entrada == "." || $entrada == "..")
                {
                    continue;
                }
                if (is_file($pasta . "/zip/" . $entrada))
                {
                    if (strtolower(substr($entrada, -4)) == '.htm')
                    {
                        $html = file_get_contents($pasta . "/zip/" . $entrada);
                    }
                    unlink($pasta . "/zip/" . $entrada);
                }
                if (is_dir($pasta . "/zip/" . $entrada))
                {
                    rmdir($pasta . "/zip/" . $entrada);
                }
            }
            rmdir($pasta . "/zip");
        }
        else
        {
            $erros[] = 'O arquivo ZIP é inválido';
        }
        $zip->close();
    }
    else
    {
        $erros[] = 'O arquivo ZIP está vazio';
    }
    
    if (isset($html))
    {
        $dom_html = new DOMDocument();
        $dom_html->loadHTML($html);
        $dom_tables = $dom_html->getElementsByTagName('table');
        $tabela_invalida = false;
        foreach ($dom_tables as $dom_table)
        {
            $dom_trs = $dom_table->getElementsByTagName('tr');
            foreach ($dom_trs as $indice_linha => $dom_tr)
            {
                if (!$indice_linha)
                {
                    $dom_ths = $dom_table->getElementsByTagName('th');
                    foreach ($dom_ths as $indice_coluna => $dom_th)
                    {
                        switch ($indice_coluna)
                        {
                            case 2:
                            case 3:
                            case 4:
                            case 5:
                            case 6:
                            case 7:
                                if ($dom_th->textContent != ($indice_coluna - 1) . 'ª Dezena')
                                {
                                    $tabela_invalida = true;
                                }
                                break;
                            case 9:
                                if ($dom_th->textContent != 'Ganhadores_Sena')
                                {
                                    $tabela_invalida = true;
                                }
                        }
                    }
                }
                else
                {
                    $dom_tds = $dom_tr->getElementsByTagName('td');
                    if (count($dom_tds) != count($dom_ths))
                    {
                        continue;
                    }
                    $qtd_jogos++;
                    foreach ($dom_tds as $indice_coluna => $dom_td)
                    {
                        switch ($indice_coluna)
                        {
                            case 1:
                                $data_primeiro_jogo = isset($data_primeiro_jogo) ? $data_primeiro_jogo : $dom_td->textContent;
                                $data_ultimo_jogo = $dom_td->textContent;
                                break;
                            case 2:
                            case 3:
                            case 4:
                            case 5:
                            case 6:
                            case 7:
                                $numero_sorteado = $dom_td->textContent;
                                if (!in_array($numero_sorteado, $numeros_validos))
                                {
                                    die('O numero sorteado ' . $numero_sorteado . ' é invalido, concurso ' . ($indice_linha + 1) . ', ' . ($indice_coluna + 1) . '° numero');
                                }
                                $ocorrencias[$numero_sorteado]++;
                                break;
                            case 9:
                                if ($dom_td->textContent == '0')
                                {
                                    $qtd_premios_acumulados++;
                                }
                                else
                                {
                                    $qtd_ganhadores += (int)$dom_td->textContent;
                                }
                                break;
                        }
                    }
                }
            }
            if  ($tabela_invalida)
            {
                continue;
            }
        }
    }
    else
    {
        $erros[] = 'O arquivo HTML não foi localizado no ZIP';
    }
    
    if (!$ocorrencias)
    {
        $erros[] = 'Nenhum resultado foi encontrado';
    }
}
?>
<!DOCTYPE html>
<html>
  <head>
    <title>MEGASENA</title>
    <meta charset="utf-8">
    <meta author="danniel.df@hotmail.com.br">
    <style type="text/css">
        body 
        {
            color: #555;
            font-family: verdana, sans-serif;
            font-size: 10px;
            text-align: center;
            background: #fefffe;
            width: 50em;
            margin: auto;
        }
        label
        {
            padding-bottom: 1em;
            display: block;
        }
        p
        {
            text-align: center;
            padding: 1em;
            font-style: italic;
            display: flex;
            justify-content: center;
        }
        h1 
        {
            cursor: pointer;
            color: #096;
        }
        ul 
        {
            display: inline-block;
            text-align: left;
        }
        #form 
        {
            background-color: #096;
            color: #fff;
            font-style: italic;
            font-weight: bold;
            margin: 0 auto 1em auto;
            padding: 1em;
        }
        #erros
        {
            border: solid 1px #ffa5a5;
            background-color: #ffbeb8;
            padding: 1em;
            margin: 0 auto 1em auto;
        }
        #url
        {
            width: 30em;
        }
        #qtd
        {
            width: 3em;
        }
        #btn
        {
            border: solid 1px gray;
            padding: 0.5em 5em;
            margin-top: 1em;
        }
        #ocorrencias
        {
            display: flex;
            flex-wrap: wrap;
            justify-content: center; 
            background-color: #fbfbdf;
            padding: 1em;
            margin: 0 auto 1em auto;
        }
        #ocorrencias div
        {
            border: solid 1px #a00;
            color: #a00;
            background-color: #fff;
            padding: .5em;
            margin-right: .5em;
            margin-bottom: .5em;
        }
    </style>
  </head>
  <body onload="history.pushState('', '', '', '');">
      <h1 onclick="location.assign('.');" title="recarregar">
          MEGASENA
      </h1>
      <div id="form">
        <label style="display: block">
            URL da Caixa com o ZIP de todos resultados:<br/>
            <input type="text" id="url" value="<?php echo $url; ?>" style="text-align: center"/>
        </label>
        <label style="display: block">
            Quantidade de Jogos:<br/>
            <input type="number" id="qtd_apostas" value="<?php echo $qtd_apostas; ?>" min="1" step="1" style="width: 3em; text-align: center"/>
        </label>
        <label style="display: block">
            Quantidade de Números por Jogo:<br/>
            <input type="number" id="numeros_por_jogo" value="<?php echo $numeros_por_jogo; ?>" min="6" max="15" size="3" step="1" style="width: 3em; text-align: center"/>
        </label>
        <input 
            type="button" 
            id="btn" 
            value="Processar" 
            onclick="location.assign('?url=' + document.getElementById('url').value + '&qtd_apostas=' + document.getElementById('qtd_apostas').value + '&numeros_por_jogo=' + document.getElementById('numeros_por_jogo').value);"
        />
      </div>
    <?php
    if ($erros)
    {
        echo '<div id="erros"><ul>';
        foreach ($erros as $erro)
        {
            echo '<li>' . $erro . '</li>';
        }
        echo '</ul></div>';
    }
    if ($ocorrencias)
    {
        echo 
            '<p><b>qtd de ocorrências de cada número:</b></p>' . 
            '<div id="ocorrencias">';
        $ocorrencias_ordenadas = [];
        foreach ($ocorrencias as $numero => $qtd_ocorrencias)
        {
            if (!isset($ocorrencias_ordenadas[$qtd_ocorrencias]))
            {
                $ocorrencias_ordenadas[$qtd_ocorrencias] = [];
            }
            array_push($ocorrencias_ordenadas[$qtd_ocorrencias], $numero);
        }
        ksort($ocorrencias_ordenadas);
        echo '<table><tr><th>Ocorrências</th><th>Números</th></tr>';
        foreach ($ocorrencias_ordenadas as $qtd_ocorrencias => $numeros)
        {
            echo 
                '<tr>' .
                    '<td>' . $qtd_ocorrencias . '</td>' .
                    '<td>' .
                        implode(',',  $numeros) .
                    '</td>' .
                '</tr>';
        }
        echo '</table>';
        echo 
            '</div>' .
            '<p><b>demais estatísticas:</b></p>' . 
            '<ul>' .
                '<li>Qtd de jogos: <b>' . $qtd_jogos . '</b></li>' .
                '<li>Qtd de prêmios acumulados: <b>' . sprintf("%01.1f", $qtd_premios_acumulados * 100 / $qtd_jogos) . '%</b></li>' .
                '<li>Qtd de ganhadores até hoje: <b>' . $qtd_ganhadores . '</b></li>' .
                '<li>Qtd média de ganhadores por jogo: <b>' . sprintf("%01.2f", $qtd_ganhadores / $qtd_jogos) . '</b></li>' .
                '<li>Data do primeiro jogo: <b>' . $data_primeiro_jogo . '</b></li>' .
                '<li>Data do último jogo: <b>' . $data_ultimo_jogo . '</b></li>' .
            '</ul>';
        echo 
            '<div style="padding: 10px; background-color: #cbffaa; border: solid 1px #b9e9bb;">' .
                '<strong style="display: block; text-align: center; margin-bottom: 30px;">' . 
                    'Apostas sugeridas:' . 
                '</strong>';
        if ($qtd_apostas && $numeros_por_jogo)
        {
            for ($jogo = 1; $jogo <= $qtd_apostas; $jogo++)
            {
                $numeros = range(1, $total);
                while (count($numeros) > $numeros_por_jogo)
                {
                    $total_ocorrencias = 0;
                    foreach ($ocorrencias as $numero => $ocorrencia)
                    {
                        $numero = (int)$numero;
                        if (in_array($numero, $numeros))
                        {
                            $total_ocorrencias += $ocorrencia;
                        }
                    }
                    $range_numero_eliminado = rand(1, $total_ocorrencias);
                    $total_ocorrencias = 0;
                    foreach ($ocorrencias as $numero => $ocorrencia)
                    {
                        $numero = (int)$numero;
                        $posicao = array_search($numero, $numeros);
                        if ($posicao !== false)
                        {
                            $total_ocorrencias += $ocorrencia;
                            if ($range_numero_eliminado <= $total_ocorrencias)
                            {
                                unset($numeros[$posicao]);
                                break;
                            }
                        }
                    }
                }
                
                echo "<div style='padding: 3px; margin-top: 5px;'> Jogo " . str_pad($jogo, strlen($qtd_apostas), "0", STR_PAD_LEFT) . ": ";
                foreach ($numeros as $numero)
                {
                    echo '<span style="padding: 3px; margin-right: 3px; background-color: white;">' . str_pad($numero, strlen($total), "0", STR_PAD_LEFT) . '</span>';
                }
                echo "</div>";
            }
            echo "<div style='text-align: center; font-weight: bold; font-family: garamound, sans-serif; font-size: 2.5em; color: #d31eac; padding: 15px;'>BOA SORTE!</div>";
        }
        else
        {
            echo '<div style="background: lightgray; color: orange; padding: 3px; text-align: center; border: solid 1px gray; font-weight: bold;">Não foram definidas as apostas</div>';
        }
        echo "</div><br/>";
    }
    ?>
  </body>
</html>

Link to comment
Share on other sites

  • 2 years later...

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