Como o sorteio funciona
Nada de “confie na gente, é aleatório”. Aqui está o método.
O vencedor é escolhido antes de a roleta girar
Cada giro escolhe o vencedor antes e depois direciona a animação até ele. Essa ordem garante que a força do movimento não altere o resultado, e que ativar a redução de movimento ofereça o mesmo sorteio sem animação, em vez de seguir um caminho de código diferente. Isso também significa que a rotação exibida é a encenação de uma decisão já tomada — a única forma de cumprir ambas as garantias com total precisão.
De onde vem a aleatoriedade
A fonte é o gerador criptográfico do seu navegador, crypto.getRandomValues, e não Math.random. Math.random pode ser previsível, e em alguns motores ele realmente é; para um sorteio, isso faz diferença.
Por que descartamos alguns números
Transformar um número aleatório de 32 bits em “um número de 0 a 11” pegando o resto da divisão é sutilmente injusto. 2³² não é divisível por 12, então as primeiras opções recebem uma chance extra. Em uma roleta de doze fatias, a distorção é mínima, mas real, sempre favorece as mesmas fatias e nunca se equilibra sozinha. Por isso, em vez de usar o resto, descartamos qualquer sorteio que caia nessa sobra desigual e realizamos um novo. Isso custa um sorteio extra ocasional e garante um resultado perfeitamente uniforme.
const limit = Math.floor(2 ** 32 / max) * max;
let draw = crypto.getRandomValues(new Uint32Array(1))[0];
while (draw >= limit) {
draw = crypto.getRandomValues(new Uint32Array(1))[0];
}
return draw % max;Pesos e por que o tamanho das fatias corresponde a eles
Um sorteio ponderado soma os pesos, escolhe um número uniforme abaixo desse total pelo mesmo método de rejeição e identifica em qual entrada esse número se encaixa. A roleta então desenha cada fatia exatamente na sua proporção do círculo. Uma roleta cujas fatias parecessem iguais com chances diferentes seria exatamente o tipo de ilusão que evitamos; portanto, área visual e probabilidades são equivalentes por construção, e não apenas por convenção.
Sua lista nunca sai do seu navegador
Não há contas nem armazenamento em servidores. Sua lista fica salva neste navegador, e os links compartilhados contêm a roleta codificada na própria URL. Nada sobre os sorteios é registrado onde possamos ver.
Verifique você mesmo
O sorteio possui poucas dezenas de linhas e cada afirmação acima é validada por testes automatizados — incluindo um que fornece ao gerador números projetados para causar viés de módulo e confirma que o resultado continua uniforme.
Uma roleta suporta até 1000 entradas, e o método acima é exatamente o mesmo para uma entrada ou para todas as 1000.