1. Cada resultado vem de um gerador aleatório criptográfico
O Spinvolta sorteia com crypto.getRandomValues(), o gerador de números aleatórios criptograficamente seguro incluído em todos os navegadores e sistemas operativos modernos — a mesma fonte usada para criar chaves de cifragem. Nunca usamos Math.random() para decidir nada. (Coisas puramente decorativas, como a direção de um confete, podem usá-lo.)
2. Sem enviesamento de módulo
Um número aleatório de 32 bits nem sempre se divide de forma igual por, digamos, 7 opções: 4 294 967 296 não é múltiplo de 7, por isso o ingénuo número % 7 torna algumas opções ligeiramente mais prováveis. O Spinvolta usa amostragem por rejeição: se um número cai no resto desigual do topo do intervalo, é descartado e sorteia-se outro. Assim, cada opção tem exatamente a mesma probabilidade, seja qual for o número de opções.
3. Os pesos são exatos
No modo com pesos, valores como 1, 2,5 ou 0,125 são convertidos em números inteiros numa escala comum e somados de forma exata. Um único sorteio uniforme sobre o total escolhe o vencedor, por isso uma opção com peso 2 tem exatamente o dobro da probabilidade de uma com peso 1 — e o tamanho das fatias mostra essas probabilidades exatas.
4. Vários vencedores sem repetição
Vários vencedores, equipas, ordem aleatória, cartas e passatempos usam o algoritmo de Fisher–Yates sem enviesamento (com a mesma amostragem por rejeição), por isso cada ordem ou grupo de vencedores possível tem a mesma probabilidade.
5. Primeiro o resultado, depois a animação
Quando prime Girar, o vencedor é decidido antes de a roda se mexer. Depois, um solucionador calcula um movimento — balanço, velocidade, número de voltas, a ligeira oscilação final — que para exatamente dentro da fatia vencedora, num ponto aleatório longe das margens. Lançar com mais força, escolher um giro mais longo ou usar a paragem manual só muda o aspeto do giro. Os nossos testes automáticos verificam milhares de giros aleatórios para garantir que a animação para sempre no resultado sorteado antes e nunca escorrega para a fatia vizinha.
6. Sorteios comprovadamente justos para passatempos e salas
Nos passatempos (e em qualquer sorteio em que a confiança importe), o Spinvolta vai mais longe para que não tenha de confiar nem em nós nem em quem organiza:
- Antes do sorteio, o seu navegador fixa a lista exata de participantes e as definições e publica uma impressão digital: um hash SHA-256 da lista, das definições e de uma semente secreta. O nosso servidor regista quando a recebeu.
- A impressão digital indica uma ronda futura do farol de aleatoriedade drand League of Entropy, um valor público produzido de 3 em 3 segundos por organizações independentes de todo o mundo, que ninguém consegue prever nem escolher.
- Quando essa ronda é publicada, os vencedores são calculados a partir da impressão digital, do valor do farol e da semente.
- A página da prova mostra tudo. Qualquer pessoa pode premir Verificar para recalcular no próprio navegador, incluindo a assinatura criptográfica do farol.
Quem organiza não pode escolher o vencedor, porque o valor do farol não existia quando a lista foi fixada. Nós também não, porque nunca vemos a semente antes de a impressão digital estar fixada e não controlamos o drand. Se o farol não estiver acessível, o sorteio passa para um método de compromisso e revelação claramente identificado.
7. Testado estatisticamente
A nossa bateria de testes executa testes qui-quadrado de ajustamento sobre centenas de milhares de sorteios simulados a cada alteração, e sobre mais de um milhão na bateria completa: sorteios uniformes, com pesos, baralhações e posições com vários vencedores. Pode executar a sua própria versão na página da auditoria de imparcialidade.
O que não conseguimos provar
Num giro do dia a dia, confia que o código a ser executado no seu navegador é o que descrevemos. É executado inteiramente no seu dispositivo e pode inspecioná-lo com as ferramentas de programador do navegador. Quando há mais em jogo — prémios, sorteios públicos —, use um sorteio comprovadamente justo, que não exige confiar em ninguém.
Perguntas frequentes
A roda pode ser manipulada?
Não através da animação: o resultado é primeiro sorteado de forma justa e o movimento é calculado para o mostrar. A única forma de alterar as probabilidades é o modo com pesos, que mostra a etiqueta “Roda com pesos” e desenha as fatias à escala.
Porque é que o mesmo nome saiu duas vezes seguidas?
Porque o acaso real tem sequências. Com 10 opções, a mesma sai duas vezes seguidas em 10% dos casos. Use o modo eliminação se quiser que cada opção saia apenas uma vez.
O que é o drand?
O drand é um farol de aleatoriedade distribuído, gerido pela League of Entropy, um grupo de universidades, empresas e organizações independentes. Publica um novo valor aleatório verificável a cada poucos segundos.