Pular para o conteúdo principal
PulsarKit

Gerador de números aleatórios

Gere números aleatórios em um intervalo, sem repetição, ou strings aleatórias com letras, dígitos e símbolos, usando crypto.getRandomValues.

Como gerar números e strings aleatórios

  1. 1

    Escolha números ou string

    Alterne entre um intervalo de números, inteiros ou decimais, e uma string aleatória montada com os tipos de caracteres que você escolher.

  2. 2

    Defina o intervalo ou o alfabeto

    Para números, defina o mínimo, o máximo e se valores repetidos são permitidos. Para strings, ative ou desative tipos de caracteres, ou cole um alfabeto personalizado.

  3. 3

    Gere e copie o resultado

    Até 10.000 valores aparecem de uma vez, um por linha, prontos para copiar direto para a área de transferência.

Por que crypto.getRandomValues e não Math.random

O Math.random do JavaScript é rápido, mas nunca foi feito para resistir a previsões. Em alguns motores, um punhado de resultados basta para reconstruir o estado interno dele e prever todos os valores seguintes. Já o crypto.getRandomValues usa o gerador criptograficamente seguro do sistema operacional, a mesma fonte que os navegadores usam para criar chaves de criptografia, então nada na sequência pode ser adivinhado só de observá-la. Esta ferramenta usa essa fonte em tudo, inclusive para embaralhar uma lista quando a repetição está desativada.

Viés do módulo e como a amostragem por rejeição o elimina

O jeito ingênuo de transformar um número aleatório de 32 bits em “um valor de 1 a 100” é pegar o resto da divisão por 100, mas isso favorece sem alarde a parte baixa do intervalo: 2^32 não é divisível exatamente por 100, então os valores que sobram e não completam um múltiplo inteiro acabam todos caindo no mesmo punhado de resultados. Em vez disso, esta ferramenta descarta qualquer sorteio que caia nesse resto desigual e tenta de novo. Isso se chama amostragem por rejeição e faz com que todo número do intervalo pedido tenha exatamente a mesma probabilidade de aparecer.

Cada valor é gerado nesta aba

Números e strings são gerados inteiramente no seu navegador com a Web Crypto API. Nada do que você gera é enviado a um servidor ou gravado no armazenamento do navegador. O link de compartilhamento guarda só as suas configurações, nunca os valores gerados, porque um link previsível acabaria com o propósito de um sorteio aleatório.

Perguntas frequentes

Por que crypto.getRandomValues é melhor que Math.random?

O Math.random é otimizado para velocidade, não para imprevisibilidade, e já se mostrou que, em vários motores de JavaScript, a saída dele pode ser reconstruída a partir de uma pequena amostra de resultados. O crypto.getRandomValues usa o gerador de números aleatórios criptograficamente seguro do sistema operacional, que não oferece esse atalho.

Como funciona o “sem repetição” em intervalos grandes?

Em intervalos de até cinco milhões de valores possíveis, esta ferramenta embaralha a lista inteira com o algoritmo Fisher-Yates e pega quantos valores você pediu. Acima disso, ela sorteia um valor de cada vez e fica só com os novos, o que continua rápido, porque as colisões são raras quando você pede muito menos valores do que o intervalo contém.

O que é viés do módulo e por que isso não é só um % do intervalo?

Reduzir um número aleatório de 32 bits com uma simples operação de resto deixa a parte baixa do intervalo um pouquinho mais provável, porque 2^32 não é múltiplo exato da maioria dos tamanhos de intervalo. Esta ferramenta rejeita e sorteia de novo a pequena fatia de valores que causaria essa distorção, então todos os resultados do intervalo têm a mesma chance.

Posso usar o resultado como senha?

Uma string aleatória gerada aqui, com um alfabeto grande e comprimento suficiente, é tão forte quanto uma senha de um gerador específico. Se você quer números de entropia, uma nota de força ou uma frase secreta, a ferramenta Gerador de senha foi feita para isso.

Quantos números ou strings posso gerar de uma vez?

Até 10.000 em um único lote, sejam números ou strings. Isso cobre com folga sorteios, dados de teste e amostragens, sem precisar rodar a ferramenta várias vezes.

Os valores gerados saem do meu navegador?

Não. Cada número e cada caractere são gerados localmente com a Web Crypto API, e nada é enviado para lugar nenhum. Copiar para a área de transferência é a única forma de um valor sair da página, e isso fica totalmente sob o seu controle.

Por que o link de compartilhamento não traz os números gerados?

O link reproduz apenas as suas configurações (o intervalo, a quantidade, se valores repetidos são permitidos), nunca os próprios valores. Um link capaz de repetir os mesmos números “aleatórios” sempre que alguém quisesse os tornaria previsíveis, o que acaba com o propósito de gerá-los dessa forma.

Ferramentas relacionadas