A ferramenta Seletor Aleatório sortea números de um intervalo, ou extrai itens de uma lista de um por linha, no navegador. Dois botões de modo se sentam em cima: Número Aleatório, o de padrão, com Mín pre-preenchido com 1 e Máx com 100, e Item Aleatório da Lista, com uma área de texto cujo marcador é Alice, Bob, Charlie, Diana. Embaixo, um campo Contagem (1 por padrão), uma caixa Permitir repetições (desligada por padrão), e o botão Escolher Aleatório. Ao pressioná-lo, as extrações se imprimem numa linha grande de Resultado, com um botão de copiar embaixo, e cada extração também cai numa lista Histórico dos dez últimos resultados. Nada é enviado a lugar nenhum: a conta do intervalo, a divisão da lista e as extrações correm no dispositivo, e uma recarga da página apaga o resultado e o histórico.
O que a ferramenta recebe e o que dá
A entrada são os dois botões de modo, os campos do modo, a Contagem e o comutador Permitir repetições, e a única ação é o botão Escolher Aleatório, então nada é calculado ao vivo: o resultado muda só quando você o pressiona. O bloco de resultado mostra um rótulo pequeno de Resultado, as extrações em texto grande, e um botão de copiar que copia exatamente a cadeia de resultado. Não há botão de limpar nem forma de reiniciar: o resultado fica na tela até a próxima extração exitosa sobrescrevê-lo, e a lista de Histórico cresce até dez entradas, a mais nova primeiro.
Como o modo número extrai
Os campos Mín e Máx são lidos como inteiros, então um decimal em qualquer um deles é lido como sua parte inteira: um Mín de 1.9 é um Mín de 1. O intervalo é inclusivo nas duas pontas, e cada extração é o piso do tamanho do intervalo por uma fração aleatória, somado ao mínimo, o que faz cada inteiro do intervalo ser igualmente provável: em dez mil extrações de 1 a 10, cada valor caiu entre 970 e 1050 vezes. O tamanho do intervalo é máximo menos mínimo mais um, e cada pedido extrai quantas vezes a Contagem disser, uma por slot.
O que o sem repetições faz em cada modo
Com Permitir repetições desligado, o modo número primeiro corta o pedido ao tamanho do intervalo: pedir cinco extrações de 1 a 3 extrai três, porque só existem três números. Cada slot então extrai, e se o número extraído já tinha saído nesta rodada, extrai de novo, num novo sorteio que não consome o slot, então o resultado sempre tem o mínimo de contagem e tamanho de intervalo números únicos; um intervalo onde o mínimo é igual ao máximo, como 7 a 7, devolve um único 7 passe o que você pedir. O modo lista é a mesma ideia com uma pilha: cada extração toma um item da pilha e o tira, então cada linha distinta que você digitou é extraída no máximo uma vez, e as extrações param antes se a pilha esgotar antes da Contagem.
O que o modo lista faz com o seu texto
A lista é partida pelas quebras de linha, cada linha tem os espaços das bordas tirados, e as linhas que ficam vazias são jogadas fora, então uma linha de Alice com um espaço final se faz Alice, e uma linha vazia entre nomes é ignorada. As linhas repetidas não se fundem: duas linhas que leem Alice põem duas entradas de Alice na pilha, e com o sem repetições, uma extração de duas ainda pode voltar A, A, porque as duas entradas são membros distintos da pilha. Uma entrada que está vazia, ou que é só espaços e quebras de linha, não deixa nenhum item, e a extração não faz nada.
Quando uma extração não faz nada
Três entradas fazem do botão um nada: um Mín que é maior que o Máx, um Mín ou um Máx que não é um número, e uma lista que não deixa nada depois de recortada. Em cada caso a página não faz um resultado e não acrescenta uma entrada ao histórico, e o resultado anterior fica exatamente onde estava, porque uma extração falida não o apaga. O campo Contagem é o indulgente: uma Contagem vazia, uma palavra, ou um 0, se leem todos como 1, então o campo pode estar vazio e a extração segue sacando uma vez.
Para onde vão os números e os nomes
Para lugar nenhum fora do dispositivo. Os campos são lidos pela página, as extrações correm sobre Math.random no navegador, e nenhuma requisição de rede é feita em nenhum ponto. O resultado e o histórico de dez entradas vivem só no estado da página: não há histórico guardado nem armazenamento, então recarregar a aba esvazia os dois. Copiar usa a área de transferência do navegador, então os valores extraídos saem da página só se você pressionar copiar e colar em outro lugar.
O que não é
A ferramenta extrai, não gera valores seguros: Math.random não é uma fonte criptográfica, então para identificadores use o Gerador de UUID, e para senhas o Gerador de Senhas, que estão construídos sobre a aleatoriedade segura do navegador. Também é a ponta leve dos números aleatórios: para um intervalo com mais opções, o Gerador de Números Aleatórios vai mais longe. Para o passo a passo de outra ferramenta calculada no navegador da mesma veia, veja a guia de similaridade de strings.