Muitas ferramentas “aleatórias” on-line silenciosamente não o são – classificar uma lista com um ingênuo comparador Math.random() - 0.5, por exemplo, produz um embaralhamento mensuravelmente tendencioso. Este guia aborda por que o Random Picker usa a fonte aleatória criptográfica do navegador, como a escolha com e sem repetições difere e por que a execução inteiramente do lado do cliente é importante para qualquer coisa, desde sorteios de escritório até seleções mais confidenciais.

Por que crypto.getRandomValues em vez de Math.random

Math.random() não é especificado para ser criptograficamente seguro ou distribuído uniformemente entre navegadores e mecanismos, e a seleção ingênua de índice baseada em módulo (Math.floor(Math.random() * n)) pode introduzir uma tendência pequena, mas real, em relação a índices mais baixos. crypto.getRandomValues ​​combinado com amostragem de rejeição – descartando sorteios fora do intervalo em vez de usar o módulo diretamente – garante um resultado imparcial. Esta é a mesma classe de aleatoriedade que os navegadores usam para gerar chaves de criptografia.

Escolher com vs. sem reposição

As guias Selecionar e Múltiplos selecionam um subconjunto da sua lista. Com a opção Sem repetições ativada, cada entrada escolhida é removida do pool antes da próxima escolha, de forma que nada ou ninguém seja escolhido duas vezes. Se você solicitar mais escolhas exclusivas do que entradas, a ferramenta mostrará um erro de validação em vez de desenhar repetições silenciosamente. Diminua a contagem de escolhas, adicione mais entradas ou desative Sem repetições.

Embaralhamento Fisher-Yates

A guia Shuffle — e a lógica interna por trás de uma seleção múltipla sem repetições — usa o algoritmo de Fisher-Yates: começando da última posição, troque-a por uma posição anterior ou igual aleatória, depois mova uma posição para a esquerda e repita. Isso produz cada um dos N! ordenações possíveis com probabilidade igual, ao contrário das abordagens ingênuas de “classificar por comparador aleatório”, que são conhecidas por distorcer certas ordenações.

Quando usar cada modo

Use o Pick para um único vencedor: um grande prêmio do sorteio ou decidir quem vai primeiro. Use Múltiplo para vários vencedores ou uma lista restrita, com Sem repetições sempre que a mesma pessoa ou item não deva ganhar duas vezes. Use o Aleatório quando precisar randomizar uma sequência inteira, como ordem de fala, ordem de atribuição de equipe ou ordem de lista de reprodução, em vez de escolher um subconjunto.