Transparência: lacre, acaso e algoritmo

Nenhum jogo pode ser criado ou mudado depois do sorteio. Você não precisa confiar no LotoAgora: dá para conferir.

O lacre de cada concurso

No fechamento, 1 hora antes do horário oficial do sorteio, o LotoAgora monta a lista canônica do concurso, com uma linha por jogo na ordem de registro:

7K2;01-02-03-04-05-06-07-08-09-10-11-12-13-14-15
ALGORITMO;02-03-05-07-08-10-11-13-14-16-18-19-21-23-25
ACASO;seed=lotoagora-acaso-lotofacil-3231;n=100
  • Cada pessoa aparece pela tag pública de 3 caracteres, nunca pelo apelido.
  • As dezenas vêm em ordem crescente, com 2 dígitos, separadas por hífen.
  • A linha ALGORITMO só entra se o palpite do algoritmo foi publicado até o fechamento; senão, o algoritmo fica sem jogo naquele concurso.
  • A última linha é a semente do Acaso. Toda linha termina com quebra de linha (\n).

O lacre é o SHA-256 dessa lista, publicado no mural do concurso junto com o link para baixar a lista completa. Para conferir, baixe a lista e rode, por exemplo:

sha256sum lacre-lotofacil-3231.txt

O resultado tem de ser igual ao lacre publicado. Se alguém pedir a exclusão, só o apelido sai; a tag e as dezenas ficam, e o lacre continua verificável.

🎲 O Acaso: 100 Surpresinhas reproduzíveis

Em cada concurso, o Acaso tem 100 Surpresinhas geradas a partir da sementelotoagora-acaso-<loteria>-<concurso>. Para a Surpresinha j (1 a 100), calcula-se SHA-256 de <semente>:<j>:<c> com c = 0, 1, 2…; cada byte abaixo do maior múltiplo do tamanho do volante que cabe em 256 vira a dezena (byte mod total) + 1, sem repetir. O código abaixo reproduz qualquer Surpresinha:

import hashlib

# Lotofácil: total=25, escolhe=15 · Mega-Sena: 60, 6 · Quina: 80, 5
def surpresinha(loteria, concurso, j, total, escolhe):
    semente = f"lotoagora-acaso-{loteria}-{concurso}"
    limite = (256 // total) * total
    jogo, c = [], 0
    while len(jogo) < escolhe:
        for b in hashlib.sha256(f"{semente}:{j}:{c}".encode()).digest():
            if b >= limite:
                continue
            n = b % total + 1
            if n not in jogo:
                jogo.append(n)
            if len(jogo) == escolhe:
                break
        c += 1
    return sorted(jogo)

print(surpresinha("lotofacil", 3231, 1, 25, 15))
# [1, 2, 3, 5, 7, 8, 10, 15, 16, 18, 20, 21, 22, 23, 25]

No concurso aparecem a média de acertos das 100 Surpresinhas e a melhor delas. No ranking mensal, a linha 🎲 Acaso (mediana) soma os melhores jogos de cada Surpresinha no mês e mostra a mediana das 100 somas. As Surpresinhas não aparecem no mural: o mural é só de pessoas.

🤖 O Algoritmo do LotoAgora

É o mesmo palpite publicado em Prognósticos, registrado antes do dia do sorteio. Ele não disputa posição com as pessoas e não prevê resultados: aparece como referência no detalhe de cada concurso e na tabela abaixo, e todos os jogos dele contam, bons e ruins. Resultados passados não indicam resultados futuros.

Lacres do mês

Carregando os lacres…