Ruby genera una stringa casuale

Ruby genera una stringa casuale

Le stringhe casuali sono caratteristiche utili in vari casi come crittografia, semi di dati e altro ancora. Sebbene sia impossibile creare un valore veramente arbitrario usando macchine deterministiche, possiamo ottenere un insieme di valori pseudorandom che appaiono in modo casuale.

Questa guida ti mostrerà come generare una stringa casuale usando Ruby. Poiché una stringa è una serie di caratteri alfanumerici, inizieremo con le basi e genereremo numeri e caratteri casuali.

Generare un numero casuale

Prima di concentrarci sulla generazione di stringhe casuali in Ruby, impariamo a generare un numero casuale in Ruby.

Usiamo il metodo RAND per generare numeri casuali. Se si chiama il metodo RAND senza argomenti, genera un numero fluttuante nell'intervallo di 0.0 e 1.0

Rand ()
=> 0.041586206067679155

La funzione RAND consente anche di passare un numero intero come argomento. Se il metodo ha un valore intero fornito, genererà un valore intero casuale nell'intervallo da 0 al valore specificato.

Rand (10)
=> 5

Nell'esempio sopra, ogni volta che si esegue il metodo sopra, otterrai un valore tra 0 e 10, esclusivo.

Supponiamo di voler generare un numero casuale all'interno di un intervallo specifico. In tale scenario, è possibile specificare l'intervallo come:

Inizia ... fermati

Ad esempio, per generare un valore casuale tra 30 e 60:

Rand (30 ... 60)
=> 42

L'esempio sopra è esclusivo del valore finale. Ciò significa che 60 non sarà incluso come valore casuale.

Se si desidera includere un valore finale, utilizzare la notazione a doppia punta come:

Rand (30 ... 60)
=> 60

Generare una stringa casuale

Sebbene ci siano vari modi per generare una stringa casuale in Ruby, ne rimarremo una semplice che utilizza metodi e funzionalità Ruby integrati.

Passaggio 1 - Genera una matrice di caratteri

Il primo metodo è generare una serie di caratteri. Per fare questo, useremo il metodo di gamma in Ruby.

Ad esempio, il seguente codice genera un array di caratteri minuscole.

('a'… 'z')

Successivamente, dobbiamo convertire l'output dal codice sopra in un array. Possiamo usare il metodo TO_A come:

('a'… 'z').to_a

Il metodo sopra ci darà una serie di caratteri.

Puoi usare solo caratteri minuscole. Puoi generare caratteri maiuscoli come:

('A'… 'z').to_a

Passaggio 2 - Shuffle i personaggi generati

Nell'esempio precedente, generiamo una serie di caratteri in ordine sequenziale. Quindi, i valori non sono in ordine casuale.

Per introdurre casualità per ogni volta che viene chiamato il blocco, possiamo usare il metodo shuffle.

Il metodo shuffle restituirà un nuovo array con gli elementi nell'array precedente mescolato.

Prendi il primo array di esempio e shufferlo.

('a'… 'z').to_a.shuffle

In questo esempio, i caratteri vengono mescolati in un ordine casuale ogni volta che eseguiamo il codice.

Passaggio 3 - Converti in stringa

Fino a questo punto, abbiamo creato solo una serie di personaggi. Il prossimo passo è convertire i caratteri nell'array in una singola stringa, che possiamo ottenere usando il metodo di join.

Per esempio:

to_a.shuffle.giuntura
=> "mixwnezhjckusqogyprvfdblta"

L'esecuzione del codice sopra restituirà una stringa casuale di caratteri minuscoli.

Passaggio 4 - Più casualità

Possiamo introdurre più casualità nella nostra stringa generata introducendo caratteri maiuscoli e valori numerici.

Possiamo farlo con:

[ *'A' ... 'Z', *0… 9, *'A'… 'Z']

L'esempio sopra genererà un array di valori minuscoli, maiuscoli e numerici.

Per randomizzarli, usa il metodo shuffle e unisciti per creare una stringa. Di seguito è riportato un output di esempio:

[ *'A' ... 'Z', *0… 9, *'A'… 'Z'].shuffle.giuntura
"BC1U0HF3ZQBTQHTYN72VXRLWS6GL4KPAGPDK98UAWSJIJFNEIMCOZE5ROMVDX"

Supponiamo di voler ottenere una stringa di lunghezza specifica. Ad esempio, per generare una stringa di lunghezza 10. Possiamo passare la gamma al metodo shuffle come:

[ *'A' ... 'Z', *0… 9, *'A'… 'Z'].shuffle [0… 10].giuntura
=> "NCNERKW78MS"

Metodo 2 -Securendom Module

Ruby fornisce anche il pacchetto secureRandom per la generazione di stringhe casuali. Supporta esadecimale, base64 e byte.

Per usarlo, importalo come:

Richiedi "sequenziamento"
=> vero

Generare un valore di base 64 casuale come:

Sequenza e mantenimento.Base64
=> "cxzpk1zbbbc/odu1fsapwg =="

Per esadecimale, inserisci:

Sequenza e mantenimento.esadecimale
=> "86dc7bcec3962153efef36585696920f"

Infine, usando byte:

Sequenza e mantenimento.random_bytes
=> "\ xe6) \ x8e \ xf4 \ xd9 \ xe1w \ x1du \ xa2 \ x7f \ x86 \ x97z \ b."

Chiusura

Questa guida copre come generare valori casuali in Ruby usando metodi e moduli predefiniti.