O que é esta ferramenta?
Um randomizador de listas reordena um conjunto de itens em uma sequência aleatória, ou extrai um subconjunto aleatório dela. A parte difícil é fazer isso sem viés: uma abordagem ingênua, como ordenar um array com uma função de comparação aleatória, produz uma distribuição enviesada em que algumas ordens são muito mais prováveis que outras.
Esta ferramenta usa o algoritmo de embaralhamento Fisher–Yates (Durstenfeld), o método padrão para obter uma permutação aleatória comprovadamente uniforme — cada ordem possível da sua lista tem a mesma probabilidade de aparecer.
Por que usar?
- Embaralhamento genuinamente sem viés — Fisher–Yates, e não o antipadrão comum sort(() => Math.random() - 0.5), que distorce os resultados.
- Modo de sorteio de vencedores: extraia exatamente N itens aleatórios em vez de embaralhar a lista inteira, ideal para rifas e sorteios.
- Remoção opcional de duplicados antes de embaralhar, para listas que possam ter repetições acidentais.
- Funciona com qualquer texto — nomes, tarefas, bilhetes, prêmios — um item por linha.
- Privado: o embaralhamento acontece inteiramente no seu navegador, nada é enviado.
Como usar
- Cole sua lista na caixa, um item por linha.
- Opcionalmente, marque "remover duplicados antes de embaralhar" se a lista puder conter repetições.
- Para uma reordenação completa, basta clicar em Embaralhar. Para sortear vencedores, marque a opção de N itens e defina quantos sortear.
- Copie o resultado — clique em Embaralhar novamente a qualquer momento para uma nova ordem aleatória ou um novo sorteio.
Exemplo
Entrada
Alice
Bob
Charlie
Diana
EthanResultado
Uma lista reordenada aleatoriamente, como Charlie, Ethan, Alice, Diana, Bob — diferente a cada clique em Embaralhar.Com o modo de sorteio de vencedores definido para 2, a mesma entrada pode gerar apenas Ethan e Alice — um sorteio aleatório de 2 itens, não um recorte dos 2 primeiros de uma ordem já embaralhada.
Por que um embaralhamento ingênuo produz resultados enviesados
sort(() => Math.random() - 0.5) é um truque comum que parece correto, mas não é: ele depende de o algoritmo de ordenação chamar o comparador um número específico de vezes em um padrão específico, e as implementações reais de ordenação não garantem isso. O efeito prático é um embaralhamento em que certas ordens aparecem com mais frequência que outras — sutil o suficiente para passar despercebido a um olhar casual, mas estatisticamente mensurável ao longo de muitas execuções.
O Fisher–Yates contorna o problema por completo: em vez de pedir a um algoritmo de ordenação que produza aleatoriedade indiretamente, ele troca diretamente cada posição por uma posição restante aleatória exatamente uma vez, o que é comprovadamente uniforme independentemente da implementação de ordenação da linguagem subjacente.
Perguntas frequentes
Por que não usar simplesmente array.sort(() => Math.random() - 0.5)?
Essa linha é um antipadrão bem conhecido: o sort() do JavaScript não garante que cada par de elementos seja comparado o mesmo número de vezes, então a ordem resultante fica mensuravelmente enviesada em favor de certas permutações — alguns itens acabam com mais chance de ficar perto do início ou do fim do que a aleatoriedade real produziria. O Fisher–Yates evita isso completamente por construção, e é o algoritmo que esta ferramenta realmente implementa.
A ordem do embaralhamento é realmente sem viés?
Sim. O Fisher–Yates percorre a lista uma vez e, em cada etapa, troca o item atual por um item escolhido de forma uniformemente aleatória entre a parte ainda não embaralhada. Isso é matematicamente comprovado para produzir cada ordem possível com igual probabilidade, dada uma boa fonte de aleatoriedade (o Math.random() do JavaScript).
Qual é a diferença entre o modo de embaralhamento e o modo de sorteio de vencedores?
O modo de embaralhamento reordena todos os itens da sua lista e mostra todos eles, apenas em uma nova ordem. O modo de sorteio de vencedores extrai apenas N itens aleatórios e mostra apenas esses — útil quando você quer selecionar um número fixo de vencedores ou amostras sem revelar toda a lista reordenada.
Posso usar isso para um sorteio real com prêmios?
Sim, para sorteios e rifas informais isso funciona bem, já que a aleatoriedade é genuinamente uniforme. Para um sorteio legalmente regulado com prêmios em dinheiro, verifique as regulamentações locais — algumas jurisdições exigem um processo de sorteio específico e auditável.
Remover duplicados altera minha lista original?
Não — a deduplicação afeta apenas o resultado embaralhado, e somente quando a caixa está marcada. Sua lista de entrada permanece exatamente como você a digitou, então você pode ativar ou desativar a opção e embaralhar novamente sem precisar redigitar nada.