1. Todo resultado vem de um gerador aleatório criptográfico
O Spinvolta sorteia com crypto.getRandomValues(), o gerador de números aleatórios criptograficamente seguro de todo navegador e sistema operacional moderno, a mesma fonte usada para criar chaves de criptografia. Nunca usamos Math.random() para decidir nada. (Coisas puramente decorativas, como para onde voa um pedaço de confete, podem usar.)
2. Sem viés de módulo
Um número aleatório de 32 bits nem sempre se divide igualmente entre, digamos, 7 opções: 4.294.967.296 não é múltiplo de 7, então o ingênuo número % 7 deixa algumas opções um pouquinho mais prováveis. O Spinvolta usa amostragem por rejeição: se um número cai na sobra desigual do topo do intervalo, ele é descartado e outro é sorteado. Cada opção fica exatamente com a mesma chance, para qualquer 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 exatamente. Um único sorteio uniforme sobre o total escolhe o vencedor, então uma opção com peso 2 tem exatamente o dobro de chance de uma com peso 1, e o tamanho das fatias mostra essas chances exatas.
4. Vários vencedores sem repetição
Vários vencedores, times, ordem aleatória, cartas e sorteios usam o algoritmo de Fisher–Yates sem viés (com a mesma amostragem por rejeição), então toda ordem ou grupo de vencedores possível tem a mesma chance.
5. Primeiro o resultado, depois a animação
Quando você aperta Girar, o vencedor é decidido antes de a roleta se mover. Depois, um solucionador calcula um movimento —impulso, velocidade, número de voltas, o leve balanço final— que para exatamente dentro da fatia vencedora, num ponto aleatório longe das bordas. Lançar mais forte, escolher um giro mais longo ou usar a parada manual só muda a aparência do giro. Nossos testes automáticos conferem milhares de giros aleatórios para garantir que a animação sempre para no resultado sorteado antes e nunca escorrega para a fatia vizinha.
6. Sorteios comprovadamente justos para promoções e salas
Em sorteios (e em qualquer sorteio em que a confiança importe), o Spinvolta vai além para você não precisar confiar nem em nós nem em quem organiza:
- Antes do sorteio, seu navegador fixa a lista exata de participantes e as configurações e publica uma impressão digital: um hash SHA-256 da lista, das configurações e de uma semente secreta. Nosso servidor registra quando a recebeu.
- A impressão digital indica uma rodada futura do farol de aleatoriedade drand League of Entropy, um valor público produzido a cada 3 segundos por organizações independentes do mundo todo, que ninguém pode prever nem escolher.
- Quando essa rodada é publicada, os vencedores são calculados a partir da impressão digital, do valor do farol e da semente.
- A página de prova mostra tudo. Qualquer pessoa pode apertar Verificar para recalcular no próprio navegador, inclusive conferindo 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 ser fixada e não controlamos o drand. Se o farol estiver inacessível, o sorteio passa para um sorteio de compromisso e revelação claramente identificado.
7. Testado estatisticamente
Nossa bateria de testes roda testes qui-quadrado de aderência em centenas de milhares de sorteios simulados a cada mudança, e em mais de um milhão na bateria completa: sorteios uniformes, com pesos, embaralhamentos e posições com vários vencedores. Você pode rodar sua própria versão na página de auditoria de imparcialidade.
O que não podemos provar
Num giro do dia a dia, você confia que o código rodando no seu navegador é o que descrevemos. Ele roda inteiramente no seu aparelho e você pode inspecioná-lo com as ferramentas de desenvolvedor 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
Dá para manipular a roleta?
Não pela animação: o resultado é sorteado de forma justa primeiro e o movimento é calculado para mostrá-lo. A única forma de mudar as chances é o modo com pesos, que mostra o selo “Roleta com pesos” e desenha as fatias na proporção certa.
Por que o mesmo nome saiu duas vezes seguidas?
Porque o acaso de verdade tem sequências. Com 10 opções, a mesma sai duas vezes seguidas 10% das vezes. Use o modo eliminação se quiser que cada opção saia uma vez só.
O que é o drand?
O drand é um farol de aleatoriedade distribuído mantido pela League of Entropy, um grupo de universidades, empresas e organizações independentes. Ele publica um novo valor aleatório verificável a cada poucos segundos.