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 ()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)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 ... fermatiAd esempio, per generare un valore casuale tra 30 e 60:
Rand (30 ... 60)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)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_aIl metodo sopra ci darà una serie di caratteri.
Puoi usare solo caratteri minuscole. Puoi generare caratteri maiuscoli come:
('A'… 'z').to_aPassaggio 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.shuffleIn 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.giunturaL'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.giunturaSupponiamo 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].giunturaMetodo 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"Generare un valore di base 64 casuale come:
Sequenza e mantenimento.Base64Per esadecimale, inserisci:
Sequenza e mantenimento.esadecimaleInfine, usando byte:
Sequenza e mantenimento.random_bytesChiusura
Questa guida copre come generare valori casuali in Ruby usando metodi e moduli predefiniti.