Dia a dia

Como sortear um ganhador de uma lista sem que ninguém possa contestar

Cole os nomes, sorteie uma vez e pare por aí. O difícil não é o sorteio: é a lista e as regras em volta dela.

Coloque cada participação em uma linha própria, embaralhe a lista inteira uma única vez com um algoritmo que trate todas as posições da mesma forma e fique com o que terminar no topo. Esse é o método, e leva uns 30 segundos com um sorteador que escolhe a partir de uma lista colada. O que decide se o resultado sobrevive ao contato com os perdedores é tudo o que está em volta do sorteio: uma lista com a mesma pessoa três vezes, um embaralhamento que favorece certas posições sem ninguém perceber e regras inventadas depois que o nome aparece.

Como fazer o sorteio em cinco passos

  1. Junte as participações em texto puro, uma por linha. Nomes, números de ticket, e-mails, qualquer coisa que identifique uma pessoa sem ambiguidade.
  2. Tire os duplicados e quem não pode participar antes de sortear.
  3. Diga em voz alta — ou escreva no post — quantos ganhadores vão sair e o que acontece se um deles não responder.
  4. Sorteie uma vez só.
  5. Anuncie o resultado com o número de participações do lado: "um entre 142 participações" diz mais do que um nome sozinho.

O passo quatro é onde mora a trapaça. Um sorteio que você repete até gostar da resposta não é um sorteio, e as pessoas percebem.

Defina as regras antes de apertar o botão

Toda regra que você acrescenta depois de ver o ganhador parece uma regra acrescentada por causa do ganhador. Resolva isto primeiro:

Nada disso é um problema técnico, e é por isso que os sorteios que acabam em discussão normalmente caem por aí, e não pela aleatoriedade.

Limpe a lista primeiro

A maioria das listas de participação chega uma bagunça: a exportação de um formulário, uma thread de comentários, um canal de chat onde as pessoas responderam. Antes de sortear, a lista precisa ter exatamente uma linha por participação válida.

Um sorteador consegue fazer uma parte disso por você. Linhas em branco são puladas, os espaços em volta de cada entrada são cortados e "ignorar linhas repetidas" — marcado por padrão — junta as entradas que só diferem em maiúsculas, então anna e Anna contam uma vez. O que nenhuma ferramenta consegue deduzir é que "Anna Smith" e "A. Smith" são a mesma pessoa, ou que duas pessoas diferentes se chamam Chris. Isso você confere no olho. Se a lista crua saiu de uma planilha ou de uma thread extraída com scraping, uma passada de verdade para tirar as linhas repetidas de uma lista antes de colar vai te poupar a discussão.

Mais uma coisa para observar: uma linha é uma participação. Cole uma linha de CSV e a linha inteira — vírgulas, e-mail, timestamp — vira uma única participação com um nome enterrado dentro.

Um sorteador online é mesmo aleatório?

Duas coisas decidem isso, e as duas são invisíveis de fora.

A primeira é o embaralhamento. O truque popular de uma linha só é ordenar a lista com um comparador que devolve um número aleatório. Parece esperto e não produz uma ordem aleatória. Os algoritmos de ordenação partem do princípio de que a comparação é consistente: se A vem antes de B uma vez, isso continua valendo. Dê a eles um cara ou coroa e o resultado depende de quais pares aquele algoritmo específico comparou, e em que ordem. As entradas tendem a terminar perto de onde começaram, e o viés muda de navegador para navegador porque as implementações de sort deles são diferentes.

O algoritmo correto, Fisher-Yates, não é mais difícil: percorra a lista de trás para frente a partir da última posição e, a cada passo, troque o item atual por um sorteado entre essa posição e as anteriores. Toda ordem possível sai com a mesma probabilidade.

A segunda é a fonte de aleatoriedade. Math.random() é uma fórmula com uma seed definida uma vez só, que produz uma sequência que parece aleatória e é inteiramente determinada por essa seed. Serve para o tremidinho de uma animação. crypto.getRandomValues() puxa do gerador criptográfico do navegador, semeado pelo sistema operacional: a mesma maquinaria por trás das chaves de criptografia. Para decidir quem paga o café isso é um exagero absurdo. Para um sorteio em que há algo em jogo, elimina uma categoria inteira de reclamação sem nenhum esforço a mais, e é o que o sorteador deste site usa.

Por que pegar o resto da divisão é um pouco injusto

Transformar um número aleatório de 32 bits em um número entre 0 e 9 pegando o resto introduz um viés minúsculo, porque 4.294.967.296 não é múltiplo de 10 e o pedaço que sobra no topo deixa os seis primeiros resultados marginalmente mais prováveis. Em uma lista de 20 nomes ninguém jamais conseguiria detectar isso. Tirar o viés é trivial de qualquer jeito: descarte qualquer valor que caia no bloco final incompleto e sorteie de novo.

Como escolher vários ganhadores sem repetir?

As pessoas querem dizer duas coisas diferentes com isso, e misturar as duas é como a mesma pessoa acaba levando o primeiro e o segundo prêmio.

Vários ganhadores de uma vez. Peça a quantidade que você quer em um único sorteio. Um embaralhamento seguido de pegar as três primeiras linhas devolve três linhas diferentes, garantido, sem nenhuma chance de colisão. Só que linhas diferentes não é o mesmo que pessoas diferentes: se alguém está dez vezes na lista por participações bônus, duas dessas três vagas podem cair no mesmo nome.

Rodadas, sorteadas uma de cada vez. Primeiro prêmio, depois o segundo, depois o terceiro. Aqui você quer o ganhador fora da lista entre um sorteio e outro; senão, cada rodada começa da lista inteira e uma repetição é perfeitamente possível. Marcar "apagar os vencedores da lista depois de sortear" faz exatamente isso: cada resultado sai e o nome some da caixa, então a rodada seguinte roda sobre o que sobrou.

Nos dois casos, a ferramenta esquece tudo quando a página recarrega: a lista e quais nomes já saíram. Copie o resultado de cada rodada para algum lugar antes de mexer nessa aba.

Se o que você quer é uma ordem de apresentação e não um ganhador — quem apresenta primeiro, quem bate os pênaltis, o rodízio de tarefas —, use o modo de embaralhar e leia a lista inteira de cima a baixo. Mesmo algoritmo, saída diferente, só que o painel de resultados para em 500 linhas e avisa quantas deixou de fora.

Dá para dar mais chances a alguém?

Só colocando a pessoa na lista mais de uma vez. Dez participações por uma indicação significam dez linhas com aquele nome, e você precisa desligar o filtro de duplicados para essas linhas contarem: ele existe para limpar dados colados e não sabe diferenciar uma repetição que você quis de uma que você não quis.

Não existe campo de peso nem caixa de porcentagem, e esse é um limite proposital. É muito fácil errar de um jeito sutil em um sorteio ponderado, e uma lista que você consegue ler e contar é uma lista que você consegue entregar para quem discorda de você.

Por que o mesmo nome pode sair duas vezes

Sorteie um nome entre vinte hoje e outro amanhã: há uma chance de um em vinte de ser o mesmo nome. As pessoas leem isso como defeito. É o contrário: um gerador que se recusasse a repetir é que seria o enviesado. Ninguém "está na vez", cada sorteio não sabe nada do anterior, e uma sequência genuinamente aleatória tem aglomerados e sequências repetidas que uma pessoa tentando fingir aleatoriedade jamais escreveria.

Quando a lisura precisa ser demonstrável

É aqui que um sorteador que roda no navegador para. O sorteio é justo; ele não produz nenhuma prova disso. Não há seed, nem log, nem timestamp, nem comprovante: só um nome na sua tela, e "confia em mim" não é um argumento que vence.

Se há prêmios de verdade e os participantes podem contestar o resultado:

Promoções com prêmio também são reguladas de forma diferente dependendo de onde você e seus participantes moram, e da plataforma onde você está fazendo o sorteio. Isso é um problema separado da aleatoriedade, e sorteador nenhum, de tipo nenhum, resolve isso.

Para um sorteio comum — um rodízio de equipe, o sorteio de um livro, decidir quem apresenta primeiro —, o sorteador daqui dá conta: cole a lista, escolha um ou vários, ou divida tudo em times. Ele roda na sua aba com um embaralhamento Fisher-Yates sobre a aleatoriedade criptográfica do navegador, e a lista nunca sai do seu computador, que é também o motivo de ele não conseguir te dar um comprovante.

A maior parte do trabalho está na lista, não no sorteio. Colocar em ordem alfabética primeiro é o jeito mais rápido de ver a mesma pessoa duas vezes antes que o sorteio veja, e ordenar uma lista sem as maiúsculas pularem para o topo é mais chato do que parece — que é a outra metade de conseguir uma lista limpa.

Perguntas frequentes

Como eu sorteio um ganhador aleatório de uma lista de nomes?

Coloque um nome por linha, tire os duplicados e as participações que não valem, depois embaralhe a lista inteira uma vez e pegue o primeiro resultado. Fazer isso em um sorteador que roda no navegador leva menos de um minuto e evita a tentação de sortear de novo. Anuncie o ganhador junto com o número de participações, para as pessoas verem o tamanho do sorteio.

Os sorteadores de nomes online são mesmo justos?

Depende de como eles embaralham. Uma lista ordenada com um comparador aleatório — o truque comum de uma linha só — não é uniforme, e as entradas tendem a terminar perto de onde começaram. Um sorteador que usa um embaralhamento Fisher-Yates sobre crypto.getRandomValues() é genuinamente parelho, mas nenhuma ferramenta de navegador consegue provar para um terceiro que o sorteio aconteceu como foi descrito.

Como escolher vários ganhadores sem a mesma pessoa ganhar duas vezes?

Peça todos em um sorteio só, em vez de sortear várias vezes. Um único sorteio de três ganhadores devolve três linhas diferentes, então a única forma de uma pessoa levar duas vagas é o nome dela estar duas vezes na lista. Para sorteá-los em ordem de primeiro, segundo e terceiro prêmio, tire cada ganhador da lista antes da rodada seguinte.

Posso dar mais chances de ganhar a alguns participantes?

Sim, listando essas pessoas mais de uma vez — dez participações bônus são dez linhas idênticas. Garanta que qualquer filtro de duplicados esteja desligado antes, senão essas linhas voltam a virar uma só. O sorteador deste site não tem nenhum campo de peso além disso, e de qualquer forma uma lista que você consegue contar na mão é mais fácil de defender.

Como eu provo que o sorteio de um prêmio não foi armado?

Comprometa-se com as regras e com a lista de participantes antes de sortear: publique a lista, ou publique um hash dela se os nomes forem privados, para poder mostrar depois que nada mudou. Grave a tela enquanto sorteia. Para prêmios grandes o bastante para serem contestados, use um serviço que guarde as participações e o resultado, porque uma ferramenta que por design mantém sua lista local não consegue produzir provas.

O mesmo nome sair duas vezes significa que o sorteador está quebrado?

Não. Sorteios separados são independentes, então com vinte participações há uma chance de um em vinte de repetir toda vez. Um gerador que evitasse se repetir é que seria o enviesado. Se você precisa que repetir seja impossível, faça um sorteio só para vários ganhadores ou apague cada ganhador da lista conforme ele sai.

Última atualização 19 de setembro de 2026