Tilfeldige strenger er nyttige funksjoner i forskjellige tilfeller som kryptering, datafrø og mer. Selv om det er umulig å skape en virkelig vilkårlig verdi ved bruk av deterministiske maskiner, kan vi få et sett med pseudorandomverdier som vises tilfeldig generert.
Denne guiden vil vise deg hvordan du genererer en tilfeldig streng ved hjelp av Ruby. Siden en streng er en rekke alfanumeriske tegn, vil vi starte med det grunnleggende og generere tilfeldige tall og tegn.
Generere et tilfeldig tall
Før vi fokuserer på å generere tilfeldige strenger i Ruby, la oss lære å generere et tilfeldig tall i Ruby.
Vi bruker RAND -metoden for å generere tilfeldige tall. Hvis du kaller RAND -metoden uten argumenter, genererer den et flytende tall i området 0.0 og 1.0
Rand ()RAND -funksjonen lar deg også passere et heltall som et argument. Hvis metoden har en gitt heltallverdi, vil den generere en tilfeldig heltallverdi i området 0 til den spesifiserte verdien.
Rand (10)I eksemplet over, hver gang du kjører metoden over, vil du få en verdi mellom 0 og 10, eksklusiv.
Anta at du vil generere et tilfeldig tall innen et bestemt område. I et slikt scenario kan du spesifisere området som:
start stoppFor eksempel å generere en tilfeldig verdi mellom 30 og 60:
Rand (30… 60)Eksemplet over er eksklusivt for sluttverdien. Dette betyr at 60 ikke vil bli inkludert som en tilfeldig verdi.
Hvis du vil inkludere en sluttverdi, bruk dobbeltpunktnotasjonen som:
Rand (30… 60)Generere en tilfeldig streng
Selv om det er forskjellige måter å generere en tilfeldig streng i Ruby, vil vi holde oss til en enkel som bruker innebygde rubinmetoder og funksjonalitet.
Trinn 1 - Generer utvalg av tegn
Den første metoden er å generere en rekke tegn. For å gjøre dette, vil vi bruke rekkevidden i Ruby.
For eksempel genererer følgende kode en rekke små bokstaver.
('A' ... 'Z')Deretter må vi konvertere utdataene fra ovennevnte kode til en matrise. Vi kan bruke TO_A -metoden som:
('A' ... 'Z').to_aOvennevnte metode vil gi oss en rekke tegn.
Du kan bare bare bruke små bokstaver. Du kan generere store bokstaver som:
('A' ... 'Z').to_aTrinn 2 - Bland de genererte tegnene
I forrige eksempel genererer vi en rekke tegn i sekvensiell rekkefølge. Derfor er ikke verdiene i tilfeldig rekkefølge.
For å introdusere tilfeldighet for hver gang blokken kalles, kan vi bruke shuffle -metoden.
Shuffle -metoden vil returnere en ny matrise med elementene i den forrige matrisen blandet.
Ta det første eksemplet og stokker det.
('A' ... 'Z').to_a.tilfeldig rekkefølgeI dette eksemplet blir karakterene blandet i en tilfeldig rekkefølge hver gang vi kjører koden.
Trinn 3 - Konverter til streng
Frem til dette punktet har vi bare opprettet en rekke tegn. Neste trinn er å konvertere tegnene i matrisen til en enkelt streng, som vi kan oppnå ved hjelp av Join -metoden.
For eksempel:
to_a.tilfeldig rekkefølge.bli medÅ kjøre koden over vil returnere en tilfeldig streng med små bokstaver.
Trinn 4 - Mer tilfeldighet
Vi kan introdusere mer tilfeldighet til vår genererte streng ved å introdusere store bokstaver og numeriske verdier.
Vi kan gjøre dette ved:
[ *'A' ... 'Z', *0… 9, *'A' ... 'Z']Eksemplet over vil generere en rekke små, store bokstaver og numeriske verdier.
For å randomisere dem, bruk blandingsmetoden og bli med for å lage en streng. Nedenfor er et eksempelutgang:
[ *'A' ... 'Z', *0… 9, *'A' ... 'Z'].tilfeldig rekkefølge.bli medAnta at vi ønsker å få en streng med en bestemt lengde. For eksempel å generere en streng med lengde 10. Vi kan gi rekkevidden til blandingsmetoden som:
[ *'A' ... 'Z', *0… 9, *'A' ... 'Z'].Shuffle [0… 10].bli medMetode 2 -SecuRerAndom Module
Ruby gir også Securerandom -pakken for å generere tilfeldige strenger. Den støtter hex, base64 og byte.
For å bruke den, importer den som:
krever 'Securerandom'Generere en tilfeldig base64 -verdi som:
Securerandom.Base64For hex, skriv inn:
Securerandom.hexTil slutt ved hjelp av byte:
Securerandom.Random_bytesLukking
Denne guiden dekker hvordan du genererer tilfeldige verdier i Ruby ved hjelp av forhåndsbygde metoder og moduler.