Função para gerar uma string aleatória (random) com caracteres específicos em javascript

A dica de hoje é bem simples e muito utilizada para gerar tokens e chaves de maneira aleatória. Iremos fazer uma função random que criará uma string aleatória com tamanho e caracteres customizáveis.

function geraStringAleatoria(tamanho) {
    var stringAleatoria = '';
    var caracteres = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
    for (var i = 0; i < tamanho; i++) {
        stringAleatoria += caracteres.charAt(Math.floor(Math.random() * caracteres.length));
    }
    return stringAleatoria;
}

console.log(geraStringAleatoria(8)); // PQjN0tnQ
console.log(geraStringAleatoria(7)); // sAqUdYY
console.log(geraStringAleatoria(6)); // gle8cp
console.log(geraStringAleatoria(5)); // 3jJe3

No exemplo acima criamos a função geraStringAleatoria() que aceita como parâmetro o tamanho que a nossa string terá. Declaramos uma variável chamada stringAleatoria, que será responsável por guardar cada caractere da string, e uma variável chamada caracteres, que é uma string com todos os caracteres que queremos que sejam sorteados para gerar a string aleatória.

Vamos usar um for para gerar cada caractere da nossa string aleatória, até dar o tamanho informado como parâmetro da função. Cada vez que passar dentro do for, um caractere aleatório (com base na lista de caracteres informado anteriormente) será incrementado na string stringAleatoria. A lógica para gerar cada caractere randomicamente é a seguinte:

  • A função Math.random() retorna um número float (com várias casas decimais) aleatório maior ou igual a 0 e menor que 1 (Exemplo: 0.35467963577180917)
  • Se multiplicarmos esse valor pela quantidade de caracteres da string caracteres e arredondamos para baixo (com a função Math.floor), teremos um número inteiro que é maior ou igual a 0 e menor que o tamanho da string.
  • Agora é só pegar a letra dessa posição com a função charAt() (lembrando que a primeira posição é o 0 e a última é n-1) e inseri-la na string stringAleatoria.

Referências