Sorteador de nomes
Cole a lista de participantes e sorteie um ou vários vencedores, sem reposição, no seu próprio navegador. Sobra sempre uma lista de reserva pronta, na ordem do sorteio — e, se você precisar provar depois que não escolheu o resultado, tem o modo com semente.
O texto não sai do seu navegador — fechou a aba, sumiu.
Usa o acaso criptográfico do seu navegador. Cada clique dá um resultado novo, e nem nós conseguimos prever ou repetir qual foi.
O resultado aparece aqui, depois do clique.
Nenhum sorteio ainda.
Sem reposição: por que ninguém ganha duas vezes por acaso
Sortear um vencedor de uma lista de dez e sortear dois vencedores da mesma lista não são duas perguntas diferentes — a segunda é a primeira, uma vez a mais, sem devolver quem já saiu ao chapéu. É a mesma regra de uma rifa de papel: o bilhete premiado sai da urna e fica de fora do sorteio seguinte. Aqui isso não é um if a mais escrito por cima — é a MESMA operação que embaralha a lista inteira, cortada nos N primeiros. Sortear um vencedor é embaralhar e olhar só para o topo; sortear cinco é embaralhar e olhar para os cinco primeiros. O resto da lista embaralhada não é descartado — vira a reserva, na ordem exata em que teria ganhado.
Essa igualdade é o motivo pelo qual esta ferramenta não escreve um sorteador de vencedor único: o motor que embaralha a lista inteira já está construído, testado e publicado em embaralhar linhas — a mesma correção por rejeição contra o viés de módulo, a mesma dupla fonte de acaso. Reescrever um sorteador de vencedor único aqui seria uma segunda cópia da mesma aritmética, só que com metade da garantia: sem os 24 defeitos injetados e as dezenas de testes que a outra página já paga.
Nome repetido é bilhete repetido
Se “Ana” aparece duas vezes na sua lista, ela tem duas chances de ganhar — igual a comprar dois bilhetes da mesma rifa. As duas linhas concorrem separadas, e nada aqui junta linhas iguais antes de sortear. Se a sua lista tem nome repetido por engano de colagem e não por intenção, é isso que ela vai fazer: dar à pessoa duas chances sem avisar. Confira antes de sortear — não é o trabalho desta ferramenta decidir por você se a repetição foi de propósito.
Lista de reserva: o prêmio não empaca
Todo sorteio de verdade esbarra na mesma situação: o vencedor não responde, não retira o prêmio, ou desiste. A pergunta “quem é o próximo” não deveria abrir um sorteio novo — abriria a suspeita de que o segundo sorteio foi ajustado para dar outro resultado. A reserva resolve isso ANTES de a pergunta aparecer: ela já está na tela, na mesma ordem em que teria ganhado se o sorteio pedisse mais vencedores. Quando o primeiro colocado não aparece, o prêmio passa para o primeiro da reserva — sem sortear de novo, e sem ninguém precisar confiar na sua palavra de que o segundo sorteio foi justo.
Sorteio com semente: como provar depois que foi limpo
No modo com semente, o vencedor é uma função do texto que você escreve. A mesma semente, com a mesma lista, devolve sempre o mesmo resultado — em qualquer computador, hoje ou daqui a cinco anos. Publique a semente junto com o vencedor, e quem duvidar refaz o sorteio.
A semente só prova alguma coisa se ninguém pôde escolhê-la depois de ver a lista — senão dá para tentar sementes até uma delas sortear quem interessa. O que prova é anunciar, ANTES do sorteio, que a semente vai ser algo público e futuro — os números do próximo sorteio da Loteria Federal, por exemplo — e usar exatamente isso quando chegar a hora.
O algoritmo é o mesmo publicado em embaralhar linhas, com um passo a mais no fim — cortar a lista embaralhada nos vencedores. Em Python, com a biblioteca padrão e nada mais:
import hashlib
def fluxo(semente):
k = 0
while True:
bloco = hashlib.sha256(
semente.encode("utf-8") + b"\x00" + str(k).encode("ascii")
).digest()
for i in range(0, 32, 4):
yield int.from_bytes(bloco[i:i + 4], "big")
k += 1
def embaralhar(itens, semente):
r = list(itens)
f = fluxo(semente)
for i in range(len(r) - 1, 0, -1):
m = i + 1
teto = (1 << 32) - ((1 << 32) % m)
x = next(f)
while x >= teto: # rejeita a sobra: é o que tira o viés
x = next(f)
j = x % m
r[i], r[j] = r[j], r[i]
return r
def vencedores(itens, semente, n):
return embaralhar(itens, semente)[:n] # o resto é a reserva, na mesma ordem
print(vencedores(["ana","bruno","carla","diego","elena"], "sorteio-2026", 2))
# ['elena', 'bruno']Esse resultado não foi digitado nesta página: ele sai do mesmo código que roda no botão acima, no momento em que a página é construída.
Serve para sorteio de prêmio?
Para escolher quem se apresenta primeiro, distribuir uma vaga de plantão, ou sortear quem paga o café, serve e é para isso que ela existe. Para promoção comercial — aquele sorteio de prêmio a título de propaganda, o mais comum entre os motivos que trazem gente a esta busca —, a conta é outra e não depende de ferramenta nenhuma: a Lei 5.768/1971 diz, no art. 1º, que a distribuição gratuita de prêmios a título de propaganda “dependerá de prévia autorização”, hoje concedida pela Secretaria de Prêmios e Apostas do Ministério da Fazenda. Nenhum sorteador substitui essa autorização, e quem disser o contrário está vendendo problema.
O texto sai do meu computador?
Não. O sorteio inteiro acontece dentro do seu navegador — não existe servidor recebendo a sua lista, não existe cadastro e nada fica guardado depois que você fecha a aba. É o que permite colar aqui a lista de inscritos de um sorteio, de clientes ou de alunos.
Ela mexe no meu texto?
Só na escolha de quem sai. Cada nome volta exatamente como foi colado, letra por letra. Se a sua lista precisa de limpeza antes — espaço duplo, linha em branco perdida no meio —, isso é trabalho do limpar formatação; se é tirar repetidas de verdade (e não bilhetes de propósito), do removedor de linhas duplicadas.