Precisa de sortear o vencedor de um prémio, escolher que aluno vai responder à pergunta ou decidir quem vai lavar a loiça? Este sorteador de nomes para Portugal escolhe de forma imparcial a partir de qualquer lista que colar. Coloque as entradas na caixa «Itens» — uma por linha ou separadas por vírgulas —, defina a quantidade desejada em «Quantidade» e prima «Gerar». Uma lista precisa de pelo menos dois itens e comporta até 1000, com um máximo de 200 carateres cada.
Cada sorteio é feito diretamente no seu navegador usando a Web Crypto API (crypto.getRandomValues), que fornece valores aleatórios com segurança criptográfica a partir da aleatoriedade do próprio sistema. A sua lista nunca é enviada para um servidor, nunca é registada e nós nunca a vemos — algo ainda mais importante aqui, porque o que as pessoas colam costuma ser uma lista de clientes, uma pauta escolar ou nomes de colegas. O botão «Carregar do arquivo» mantém a mesma promessa: é o seu navegador que lê o ficheiro e preenche a caixa localmente, sem enviar nada para a internet.
As opções foram feitas para as listas que as pessoas realmente usam. A opção «Separador» fica em «Automático», que consegue distinguir quebras de linha de vírgulas por conta própria, de modo a que uma lista copiada de uma folha de cálculo, de uma mensagem ou de um documento funcione sem precisar de ajustes. Mude para «Quebra de linha», «Vírgula» ou «Espaço» quando os dados misturarem formatos — e note que «Espaço» é sempre uma escolha manual e nunca automática, porque entradas como nomes completos já contêm espaços, e separá-los por predefinição estragaria a maioria das listas. O campo «Quantidade» decide quantos itens sortear, de 1 a 100. Vai sortear três prémios entre 200 participantes? Cole os participantes, ajuste a «Quantidade» para 3 e prima «Gerar». Dois controlos só se aplicam quando a quantidade é 2 ou mais, e ficam desativados até lá: «Sem repetições», que decide se o mesmo item pode ser sorteado duas vezes, e «Formato de saída», que define como as escolhas são separadas — «Um em cada linha», «Separado por espaços» ou «Separado por vírgulas».
Uma fileira de botões dentro da caixa «Itens» faz as edições que normalmente faria noutro lugar. «Carregar do arquivo» puxa uma lista diretamente de um ficheiro de texto ou CSV. «Embaralhar» reordena as entradas na caixa, «Classificar» organiza-as por ordem alfabética (com os números ordenados naturalmente, e um segundo clique inverte a ordem) e «Limpar» esvazia a caixa. O botão «Preencha com dados de amostra» insere uma lista curta de exemplo para testar a ferramenta com um clique, enquanto «Expandir para caber no conteúdo» estica a caixa para mostrar uma lista longa inteira e «Recolher para o tamanho padrão» a fecha de volta. Abaixo do resultado, «Copiar tudo» coloca todas as escolhas na área de transferência, «Guardar em ficheiro» transfere o resultado para o computador, e o «Histórico» guarda os últimos 10 sorteios no navegador, deixando um resultado anterior a apenas um clique de distância.
Como o sorteio é realmente feito? Quando prime «Gerar», a página pede ao navegador valores aleatórios por meio de crypto.getRandomValues e usa-os para escolher posições na lista, em vez de passar por uma função pseudoaleatória do JavaScript como Math.random(). Transformar um valor bruto de 32 bits numa posição é onde a maioria das ferramentas erra silenciosamente: usar o módulo do valor pelo tamanho da lista é a abordagem óbvia, porém enviesada, porque a menos que o tamanho da lista divida 2^32 com exatidão, as entradas perto do início da lista saem com uma frequência ligeiramente maior. Esta falha chama-se viés de módulo (modulo bias), e é algo mensurável em vez de teórico. Em vez disso, este sorteador descarta qualquer valor que ultrapasse o maior múltiplo exato do tamanho da lista e realiza um novo sorteio — uma técnica chamada amostragem de rejeição (rejection sampling). Custa alguns sorteios a mais, mas oferece uma garantia exata em vez de aproximada. A posição na lista não muda nada: a primeira e a última entrada têm a mesma probabilidade em cada sorteio.
O controlo «Sem repetições» separa dois tipos fundamentalmente diferentes de sorteio, e a estatística tem um nome para cada um. Quando está ativado, o sorteador embaralha uma cópia da lista com o algoritmo de Fisher-Yates e retira as entradas do topo — o equivalente a tirar papéis de um chapéu sem os voltar a colocar, o que garante que ninguém seja escolhido duas vezes e que qualquer grupo desse tamanho tenha a mesma probabilidade. Esta é a amostragem sem reposição (sampling without replacement), ideal para sorteios de prémios, equipas e ordem de turnos. Com ele desativado, cada escolha é feita de forma independente da lista inteira, por isso a mesma entrada pode sair mais de uma vez — a amostragem com reposição (sampling with replacement), ideal para quando todos continuam elegíveis a cada ronda, como em sorteios repetidos ou numa amostra estatística rápida. Nenhum dos modos é mais justo que o outro; servem propósitos diferentes.
Um sorteio justo não foi feito para parecer justo. Sorteie cinco nomes entre dez e verá regularmente duas escolhas que estavam lado a lado na lista original, ou o mesmo nome a sair duas vezes seguidas quando as repetições são permitidas, e tudo isto é perfeitamente normal. Cada sorteio é independente: escolhas anteriores não têm absolutamente nenhuma influência sobre as posteriores, e ninguém passa a «merecer» uma vitória por estar à espera há mais tempo. O instinto que insiste no contrário é a falácia do apostador (gambler's fallacy), e é esse mesmo instinto que nos torna péssimos a escolher aleatoriamente por conta própria — se nos pedirem para escolhermos ao acaso, evitamos a primeira e a última entrada, evitamos repetir um nome e espalhamos as nossas escolhas de forma muito mais uniforme do que o acaso faria. Um resultado que parece suspeitamente organizado é a marca registada de um ser humano; a verdadeira aleatoriedade produz aglomerados.
Porquê escolher este sorteador de nomes?
- Executa apenas no navegador: a lista é lida no seu dispositivo e não é enviada para lado nenhum
- Aleatoriedade via Web Crypto API: segurança criptográfica, sem Math.random()
- Sem viés de módulo: a amostragem de rejeição mantém a probabilidade igual para todos
- Qualquer formato de lista: por linha, vírgula ou espaço, sem mexer na formatação
- Modo «Sem repetições»: crie equipas ou sorteie vencedores sem duplicações
- Até 1000 itens e no máximo 100 escolhas num único sorteio
- Ferramentas integradas: carregar do arquivo, embaralhar, classificar, limpar, dados de amostra
- Histórico e Guardar em ficheiro: guarde o registo de um sorteio que precise de justificar
- Ilimitado e gratuito: sem registo, sem limites de uso, nada armazenado nos nossos servidores
Sorteios aleatórios são usados sempre que uma escolha precisa de sobreviver a questionamentos. Nas escolas, os professores chamam alunos sem favoritismo e dividem a turma em grupos de trabalho. Em Portugal, uma escolha imparcial resolve rapidamente quem ganha a rifa de escola ou de coletividade, quem calha a quem num amigo secreto no trabalho ou a ordem de uma apresentação. Na investigação, recolhe-se uma amostra aleatória de registos para uma auditoria. Em casa, acaba com a discussão sobre o filme a ver, e um grupo indeciso finalmente escolhe de que restaurante encomendar o jantar. O ponto em comum é uma seleção que qualquer pessoa consegue explicar depois: o sorteio usa aleatoriedade criptográfica, acontece inteiramente no seu dispositivo, e o «Histórico» mantém o resultado caso alguém pergunte mais tarde.
Este sorteador tem alguns limites honestos que valem a pena conhecer. A ferramenta não consegue extrair mais entradas distintas do que a sua lista possui — três vencedores de uma rifa precisam de pelo menos três nomes — e o limite máximo é de 1000 itens de 200 carateres cada, com até 100 escolhas num mesmo sorteio. Os botões «Embaralhar» e «Classificar» funcionam linha a linha, por isso uma lista separada por vírgulas colada numa única linha só será reordenada depois de ser dividida numa entrada por linha; além disso, ambos reorganizam a caixa, e não o sorteio em si, que continua igualmente justo, não importa a ordem dos itens. Pelo seu próprio design, cada entrada também tem exatamente o mesmo peso, então um sorteio onde um nome deva contar a dobrar exige que esse nome seja listado duas vezes. Dentro destes limites, a garantia é forte: cada entrada da sua lista tem exatamente a mesma probabilidade, a cada sorteio individual.