se você quiser aprender como gerar números aleatórios & strings em Ruby, então você está no lugar certo.Porque é exactamente disso que se trata este artigo!
com um número aleatório você pode escolher um elemento aleatório de um array, escolher um vencedor de uma lista, gerar rolos de dados, etc.
em Ruby, existem muitas maneiras de gerar números aleatórios com várias propriedades.
por exemplo…
o método rand pode ser utilizado de três formas::
- Sem argumentos,
rand
dá-lhe um número de ponto flutuante entre 0 & 1 (como 0.4836732493) - Com um número inteiro de argumento (
rand(10)
) obter um novo número inteiro entre 0 & número - Com um argumento de intervalo (
rand(1..20)
) você obtém um número inteiro entre o início do intervalo & o final do intervalo
Outras formas de gerar a aleatoriedade em Ruby incluem:
- A Matriz#shuffle método
- Array#exemplo de método
- O SecureRandom classe
Vamos passar por cima de alguns exemplos!
Geração de Números Aleatórios
Você pode gerar Ruby números aleatórios, usando o método rand:
Rand produz números de ponto flutuante (0.4836732493
) se chamado sem argumentos.
você pode passar um argumento para rand
para gerar um número começando de zero até (mas não incluindo) esse número.
rand 100> 41
Ruby random number generation is really easy, but what if you need the number to be in a specific range instead of starting from zero?Não há problema!
pode utilizar um intervalo para obter exactamente o que necessita.
Exemplo:
rand 200..500> 352
Seguro Ruby Números Aleatórios
Os números produzido pela rand pode ser o suficiente para uma aplicação simples…
…mas se você quiser usá-los para fins de segurança —como gerar um token de redefinição de senha, você deve usar SecureRandom, que é parte da biblioteca padrão do Ruby.
SecureRandom sementes seu gerador a partir de /dev / urandom em sistemas Unix & em windows ele usa o CryptAcquireContext / CryptGenRandom API.
aqui está um exemplo:
require 'securerandom'SecureRandom.random_number> 0.232
como você pode ver isso funciona muito como rand
, você também pode passar em um número máximo.
exemplo:
SecureRandom.random_number(100)> 72
a SecureRandom tem outros formatos de saída disponíveis.
usando hex
pode gerar uma cadeia de Largura Fixa hexadecimal.
SecureRandom.hex> "87694e9e5231abca6de39c58cdfbe307"
Ruby 2.5 introduziu um novo método, que produz cadeias alfanuméricas aleatórias. :
SecureRandom.alphanumeric> "PSNVXOeDpnFikJPC"
como escolher elementos aleatórios de Arrays
agora:
você pode querer obter uma escolha aleatória de uma lista.Pode tentar isto .:
.shuffle.first> 30
Mas Ruby possui o método de amostragem mais adequada (e mais rápido) para esta tarefa:
.sample> 5
Você pode usar o exemplo para intervalos, este código gera uma carta aleatória:
('a'..'z').to_a.sample> b
Você pode passar um número inteiro argumento de exemplo para obter N únicos elementos da matriz:
.sample(2)>
também É possível passar um costume gerador aleatório como um argumento:
.sample(random: SecureRandom)
Ruby Aleatória de Seqüências de caracteres
O ultimate aleatoriedade aplicação é para gerar uma seqüência aleatória com um conjunto de caracteres personalizada. Aqui está o código.:
def generate_code(number) charset = Array('A'..'Z') + Array('a'..'z') Array.new(number) { charset.sample }.joinendputs generate_code(20)
há algumas coisas acontecendo aqui.
primeiro, preparamos o nosso conjunto de caracteres usando intervalos e convertendo-os em matrizes. Em seguida, aproveitamos para chamar Array.new
com um bloco, que nos permite inicializar uma matriz de tamanho n com os valores produzidos pelo bloco.
este código produzirá cadeias da seguinte forma: TufwGfXZskHlPcYrLNKg
.
pode ajustar o conjunto de caracteres de acordo com as suas necessidades.
semear o gerador de Números Aleatórios
se você gostaria de controlar quais os números são gerados quando usando um método como rand
então você pode definir a semente.
Qual é a semente?
a semente é um número que inicia uma sequência de números aleatórios.
todos os números gerados são derivados desta semente.
é por isso que a qualidade da semente é geralmente a chave para produzir uma boa sequência de números aleatórios.
Ruby já cuida disso para você (use SecureRandom
se você precisar de segurança extra), mas em alguns cenários (principalmente testando & depuração) você pode querer definir esta semente você mesmo.
pode fazer isto com o método srand
.Com esta semente você saberá exatamente quais os números que o gerador lhe dará.
para o número 1 como sementes:
Array.new(5) { rand(1..10) }#
se você definir a semente novamente para 1, a sequência começará em 6, em seguida 9, 10, etc.
conclusão
é isso! Você está agora pronto para começar a usar aleatoriedade em seus programas Ruby 🙂
achou este post útil?
partilhe com os seus amigos & subscreva a minha newsletter para que não perca nada de novo!