Come generare numeri casuali e stringhe in Ruby

Se vuoi imparare come generare numeri casuali & stringhe in Ruby, allora sei nel posto giusto.

Perché questo è esattamente ciò che questo articolo è circa!

Con un numero casuale puoi scegliere un elemento casuale da un array, scegliere un vincitore da una lista, generare tiri di dadi, ecc.

In Ruby, ci sono molti modi per generare numeri casuali con varie proprietà.

Ad esempio…

Il metodo rand può essere utilizzato in 3 modi:

  • Senza argomenti, rand ti dà un numero decimale compreso tra 0 & 1 (come 0.4836732493)
  • Con un intero argomento (rand(10)) si ottiene un nuovo numero intero compreso tra 0 & numero
  • Con un argomento range (rand(1..20)) si ottiene un numero intero compreso tra l’inizio dell’intervallo & la fine di gamma

Altri modi per generare casualità in Ruby includono:

  • La Matrice#metodo shuffle
  • Array#metodo di campionamento
  • Il SecureRandom classe

vediamo alcuni esempi!

Generazione di numeri casuali

È possibile generare numeri casuali Ruby utilizzando il metodo rand:

ruby random

Rand produce numeri in virgola mobile (0.4836732493) se chiamati senza argomenti.

È possibile passare un argomento a rand per generare un numero a partire da zero fino a (ma non incluso) quel numero.

rand 100> 41

La generazione di numeri casuali di Ruby è davvero semplice, ma cosa succede se hai bisogno che il numero si trovi in un intervallo specifico invece di partire da zero?

Non è un problema!

Puoi utilizzare un intervallo per ottenere esattamente ciò di cui hai bisogno.

Esempio:

rand 200..500> 352

Sicuro Ruby Numeri Casuali

I numeri prodotti da rand potrebbe essere sufficiente per un’applicazione semplice…

…ma se si desidera utilizzarli per scopi di sicurezza —come generare una password reset token— allora si dovrebbe utilizzare SecureRandom, che fa parte del Rubino libreria standard.

SecureRandom semina il suo generatore da /dev/urandom su sistemi Unix & su Windows utilizza l’API CryptAcquireContext / CryptGenRandom.

Ecco un esempio:

require 'securerandom'SecureRandom.random_number> 0.232

Come puoi vedere funziona molto come rand, puoi anche passare un numero massimo.

Esempio:

SecureRandom.random_number(100)> 72

SecureRandom ha altri formati di output disponibili.

Utilizzando hex è possibile generare una stringa esadecimale a larghezza fissa.

SecureRandom.hex> "87694e9e5231abca6de39c58cdfbe307"

Ruby 2.5 ha introdotto un nuovo metodo, che produce stringhe alfanumeriche casuali:

SecureRandom.alphanumeric> "PSNVXOeDpnFikJPC"

Come scegliere elementi casuali da array

Ora:

Potresti voler ottenere una scelta casuale da un elenco.

Puoi provare questo:

.shuffle.first> 30

Ma Ruby è il metodo di campionamento che si adatta meglio (e più veloce) per questo compito:

.sample> 5

È possibile utilizzare di esempio per gli intervalli, questo codice genera una lettera a caso:

('a'..'z').to_a.sample> b

Si può passare un intero argomento a campione per ottenere N unici elementi dall’array:

.sample(2)> 

È anche possibile passare un custom generatore casuale come argomento:

.sample(random: SecureRandom)

Ruby Stringhe Casuali

L’ultimo casualità applicazione è quello di generare una stringa casuale con un set di caratteri personalizzati. Ecco il codice:

def generate_code(number) charset = Array('A'..'Z') + Array('a'..'z') Array.new(number) { charset.sample }.joinendputs generate_code(20)

Ci sono alcune cose in corso qui.

Per prima cosa, prepariamo il nostro set di caratteri usando gli intervalli e convertendoli in array. Quindi approfittiamo di chiamare Array.new con un blocco, che ci consente di inizializzare un array di dimensioni n con i valori prodotti dal blocco.

Questo codice produrrà stringhe della seguente forma: TufwGfXZskHlPcYrLNKg.

È possibile modificare il set di caratteri in base alle proprie esigenze.

Semina il generatore di numeri casuali

Se si desidera controllare quali numeri vengono generati quando si utilizza un metodo come rand, è possibile impostare il seme.

Qual è il seme?

Il seme è un numero che inizia una sequenza di numeri casuali.

Tutti i numeri generati sono derivati da questo seme.

Ecco perché la qualità del seme è solitamente la chiave per produrre una buona sequenza di numeri casuali.

Ruby si occupa già di questo per te (usa SecureRandom se hai bisogno di maggiore sicurezza), ma in alcuni scenari (principalmente test di debug &) potresti voler impostare questo seme da solo.

Puoi farlo con il metodo srand.

Kernel.srand(1)

Con questo seme saprai esattamente quali numeri ti darà il generatore.

Per il numero 1 come seme:

Array.new(5) { rand(1..10) }# 

Se si imposta nuovamente il seme su 1, la sequenza inizierà da 6, quindi 9, 10, ecc.

Conclusione

Questo è tutto! Ora sei pronto per iniziare a usare la casualità nei tuoi programmi Ruby

Hai trovato utile questo post?

Condividilo con i tuoi amici & iscriviti alla mia newsletter per non perderti nulla di nuovo!

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.

Previous post Come Ottenere un Cancello di Passare in Aeroporto Attraverso la Sicurezza]
Next post Jay Leno acquista Seafair condos