Pular para o conteúdo
PT

Sorteador de Nomes

Cole sua lista (um nome por linha, ou separados por vírgula) e sorteie um ganhador ou embaralhe todo mundo numa ordem aleatória.

Cole de uma planilha ou digite: vírgula e quebra de linha funcionam.

O embaralhamento que quase todo mundo erra

Procure como embaralhar uma lista e a primeira resposta que aparece é ordenar com uma comparação aleatória: sort(() => Math.random() - 0.5). É uma linha, parece esperto, e não produz um embaralhamento justo. Um algoritmo de ordenação supõe que a comparação recebida é consistente: que se A vem antes de B e B antes de C, então A vem antes de C. Cara ou coroa não é consistente, então o algoritmo toma decisões baseadas em comparações que ele mesmo já contradisse, e a arrumação em que ele para depende das entranhas do sort. Na prática algumas ordens saem várias vezes mais que outras, e quais delas depende do navegador.

O método correto é cem anos mais velho que o defeito. O Fisher-Yates percorre a lista da última posição até a segunda e, a cada passo, troca o item atual por um escolhido entre as posições até ele, inclusive. Esse último detalhe é a coisa toda: a faixa tem de encolher conforme se anda. Escolher da lista inteira todas as vezes é o erro clássico, e é sutil porque todas as ordens continuam alcançáveis. Só as chances é que ficam erradas. Embaralhe três nomes assim e três das seis ordens saem o dobro das outras três.

Aqui isso pesa mais que na maioria dos lugares, porque um sorteador de nomes é usado justamente quando a justiça é o ponto: quem apresenta primeiro, quem leva o ingresso, quem faz a tarefa chata. Um embaralhamento que favorece algumas arrumações em silêncio é um sorteio viciado que ninguém consegue ver. O daqui é Fisher-Yates com a faixa que encolhe, e é testado contando quantas vezes cada arrumação aparece, um teste que falha exatamente no erro descrito acima.

Os nomes são separados por quebra de linha e por vírgula, então colar uma coluna de planilha e digitar à mão funcionam igual. Linhas vazias e espaços sobrando caem fora. Nada do que você cola sai do seu navegador: o sorteio acontece na sua máquina, e a lista não é enviada nem guardada em lugar nenhum.

Perguntas frequentes

Como coloco os nomes?

Um por linha, ou separados por vírgula, ou uma mistura dos dois. Cole uma coluna direto de uma planilha que funciona. Linhas vazias e espaços a mais são ignorados, então uma linha em branco no fim da colagem não vira um participante fantasma.

Todo mundo tem a mesma chance?

Tem. Todo nome tem a mesma probabilidade de ser sorteado e, ao embaralhar, toda ordem possível é igualmente provável. Isso não vale para o embaralhamento que a maioria dos sites usa. Veja acima.

Dá para sortear mais de um ganhador?

Embaralhe a lista inteira e pegue os primeiros. A ordem produzida é justa até o fim, então os três primeiros de uma lista embaralhada são um sorteio justo de três ganhadores, sem repetição por construção.

Os nomes são enviados para algum lugar?

Não. Tudo roda no seu navegador. A lista não é enviada, não é guardada e não é visível para nós. Fechar a aba é o bastante para se livrar dela.

Um sorteio no navegador vale para um prêmio de verdade?

O sorteio é justo, mas não é comprovável para quem não estava olhando. Isso vale para todo sorteador de navegador, não só este. Para um sorteio informal está de bom tamanho; onde o resultado pode ser contestado, faça numa chamada com testemunhas ou grave a tela.

Outras ferramentas