Como a roleta continua justa
Cada giro é decidido pelo gerador criptográfico de números aleatórios do seu navegador antes de a roleta começar a se mexer. Nada do que você digita é enviado para nós. Esta página explica o método e mostra a auditoria automática mais recente.
Como o ganhador é escolhido
O ganhador é sorteado com crypto.getRandomValues, o mesmo gerador criptograficamente seguro que os navegadores usam para chaves de criptografia.
Números aleatórios de 32 bits viram uma posição na roleta por amostragem por rejeição: um número que deixaria algumas opções um pouco mais prováveis que outras é descartado e sorteado de novo. Isso elimina o pequeno viés de usar o resto de uma divisão.
O ganhador é escolhido primeiro. Depois, a animação gira a roleta para que ela pare dentro da fatia do ganhador, num ponto aleatório longe das bordas.
Pesos
Uma opção escrita como Pizza*3 tem três vezes mais chance de ganhar que uma opção com peso 1, e a fatia dela é três vezes mais larga. Os pesos podem ser números inteiros ou decimais de 0,001 a 1.000.000. Na roleta, escreva os decimais com ponto, como Pizza*0.5.
Sorteios verificáveis
Em sorteios e rifas, um sorteio verificável permite que qualquer pessoa confira depois que o resultado não foi alterado.
- Antes do giro, a página cria uma semente secreta e mostra um hash SHA-256 da semente, das opções e do horário. Publique o hash, por exemplo no chat da sua live, antes de girar.
- O giro usa um gerador criado a partir da semente secreta, então a semente e as opções definem totalmente o ganhador.
- Depois do giro, a página revela a semente num comprovante do sorteio. Qualquer pessoa pode colar o comprovante na página de verificação, que confere o hash e recalcula o ganhador.
O método exato
O hash é o SHA-256 deste texto em UTF-8: uma linha de cabeçalho, o horário do registro, a semente e depois uma linha por opção com o peso, uma tabulação e o rótulo.
weeks-and-random-draw v1
committed_at: 2026-10-16T14:05:09.123Z
seed: 64 hexadecimal characters
3 Pizza
1.5 Sushi
- A semente tem 32 bytes aleatórios de crypto.getRandomValues, escritos como 64 caracteres hexadecimais minúsculos.
- O gerador produz números de 32 bits a partir de SHA-256(bytes da semente seguidos de um contador big-endian de 4 bytes), para o contador 0, 1, 2 e assim por diante, lendo cada hash de 32 bytes como oito números big-endian.
- Se todos os pesos forem números inteiros e o peso total for no máximo 2^32, o sorteio pega o próximo número de 32 bits, pula esse número enquanto ele for maior ou igual a 2^32 − (2^32 mod total) e fica com o resto da divisão pelo total.
- Caso contrário, ele pega os dois próximos números de 32 bits, a e b, e calcula ((a >> 5) × 2^26 + (b >> 6)) ÷ 2^53, um número de 0 até 1, sem incluir o 1, e depois multiplica esse número pelo peso total.
- O ganhador é a primeira opção cuja soma acumulada de pesos é maior que esse número.
Um sorteio verificável prova que as opções e o resultado não foram alterados depois da publicação do hash. Ele não impede que um organizador crie vários hashes em segredo e publique só o que lhe convém, por isso publique o hash antes de encerrar as inscrições e crie apenas um.
Verificar um comprovante de sorteio
Auditoria mais recente
Estes testes rodam automaticamente a cada mudança no site. Última execução: 19 de outubro de 2026, 18:31.
Todos os testes passaram.
| Cenário | Giros | Qui-quadrado | Graus de liberdade | Valor-p | Resultado |
|---|---|---|---|---|---|
| 2 opções iguais | 1.000.000 | 0,86 | 1 | 0,3544 | Passou |
| 7 opções iguais | 1.000.000 | 3,42 | 6 | 0,7549 | Passou |
| 100 opções iguais | 1.000.000 | 125,45 | 99 | 0,0375 | Passou |
| 1.000 opções iguais | 1.000.000 | 1.081,73 | 999 | 0,0346 | Passou |
| Modo eliminar o sorteado, 7 opções, todas as posições | 999.999 | 41,72 | 36 | 0,2360 | Passou |
| Modo sem repetir, 7 opções, todas as posições | 999.999 | 39,90 | 36 | 0,3007 | Passou |
| Pesos | Giros | Maior diferença | Resultado |
|---|---|---|---|
| 1, 2, 3, 4 | 1.000.000 | 0,030 pontos percentuais | Passou |
| 0.5, 1.5, 3, 0.25 | 1.000.000 | 0,050 pontos percentuais | Passou |
10.000 de 10.000 giros sorteados pararam no ganhador anunciado.
10.000 de 10.000 comprovantes de sorteio aleatórios foram recalculados corretamente, tanto no navegador quanto por uma implementação independente.
Versão do motor da roleta: d828d1f5c0c3.