Strings aleatórios são recursos úteis em vários casos, como criptografia, sementes de dados e mais. Embora seja impossível criar um valor genuinamente arbitrário usando máquinas determinísticas, podemos obter um conjunto de valores pseudorandom que parecem gerados aleatoriamente.
Este guia mostrará como gerar uma string aleatória usando rubi. Como uma string é uma variedade de caracteres alfanuméricos, começaremos com o básico e geraremos números e caracteres aleatórios.
Gerando um número aleatório
Antes de nos concentrarmos em gerar strings aleatórios em Ruby, vamos aprender a gerar um número aleatório em rubi.
Usamos o método rand para gerar números aleatórios. Se você ligar para o método rand sem argumentos, ele gera um número flutuante na faixa de 0.0 e 1.0
rand ()A função RAND também permite que você passe um número inteiro como um argumento. Se o método tiver um valor inteiro fornecido, ele gerará um valor inteiro aleatório no intervalo de 0 ao valor especificado.
Rand (10)No exemplo acima, toda vez que você executa o método acima, você obterá um valor entre 0 e 10, exclusivo.
Suponha que você queira gerar um número aleatório dentro de um intervalo específico. Nesse cenário, você pode especificar o intervalo como:
Comece ... parePor exemplo, para gerar um valor aleatório entre 30 e 60:
Rand (30… 60)O exemplo acima é exclusivo do valor final. Isso significa que 60 não será incluído como um valor aleatório.
Se você deseja incluir um valor final, use a notação dupla como:
Rand (30… 60)Gerando uma corda aleatória
Embora existam várias maneiras de gerar uma corda aleatória no Ruby, ficaremos com um simples que utiliza métodos e funcionalidades de rubi embutidos.
Etapa 1 - Gere uma variedade de caracteres
O primeiro método é gerar uma variedade de caracteres. Para fazer isso, usaremos o método de intervalo em Ruby.
Por exemplo, o código a seguir gera uma matriz de caracteres minúsculos.
('a'… 'z')Em seguida, precisamos converter a saída do código acima em uma matriz. Podemos usar o método to_a como:
('a'… 'z').to_aO método acima nos dará uma variedade de personagens.
Você só pode usar apenas caracteres em minúsculas. Você pode gerar caracteres maiúsculos como:
('A'… 'z').to_aEtapa 2 - embaralhar os caracteres gerados
No exemplo anterior, geramos uma variedade de caracteres em ordem seqüencial. Portanto, os valores não estão em ordem aleatória.
Para introduzir aleatoriedade para sempre que o bloco é chamado, podemos usar o método de shuffle.
O método Shuffle retornará uma nova matriz com os elementos da matriz anterior embaralhados.
Pegue o primeiro exemplo de matriz e embaralhe.
('a'… 'z').to_a.embaralharNeste exemplo, os personagens são embaralhados em uma ordem aleatória toda vez que executamos o código.
Etapa 3 - converta para string
Até este ponto, criamos apenas uma variedade de personagens. O próximo passo é converter os caracteres na matriz em uma única string, que podemos alcançar usando o método de junção.
Por exemplo:
to_a.embaralhar.juntarA execução do código acima retornará uma sequência aleatória de caracteres minúsculos.
Etapa 4 - Mais aleatoriedade
Podemos introduzir mais aleatoriedade à nossa string gerada, introduzindo caracteres maiúsculos e valores numéricos.
Podemos fazer isso por:
[ *'a'… 'z', *0… 9, *'a'… 'z']O exemplo acima gerará uma matriz de valores minúsculos, maiúsculos e numéricos.
Para randomizá -los, use o método de shuffle e junte -se para criar uma string. Abaixo está um exemplo de saída:
[ *'a'… 'z', *0… 9, *'a'… 'z'].embaralhar.juntarSuponha que queremos obter uma sequência de um comprimento específico. Por exemplo, para gerar uma série de comprimento 10. Podemos passar o alcance para o método Shuffle como:
[ *'a'… 'z', *0… 9, *'a'… 'z'].Shuffle [0… 10].juntarMétodo 2 -Securerondom Módulo
Ruby também fornece o pacote SecureRandom para gerar strings aleatórios. Ele suporta Hex, Base64 e Bytes.
Para usá -lo, importá -lo como:
requer 'secururendom'Gerar um valor aleatório base64 como:
SecureRandom.base64Para hexadecimal, digite:
SecureRandom.hexadecimalFinalmente, usando bytes:
SecureRandom.Random_bytesFechamento
Este guia abrange como gerar valores aleatórios no rubi usando métodos e módulos pré -construídos.