Ruby genererer tilfeldig streng

Ruby genererer tilfeldig streng

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 ()
=> 0.041586206067679155

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)
=> 5

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 stopp

For eksempel å generere en tilfeldig verdi mellom 30 og 60:

Rand (30… 60)
=> 42

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)
=> 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_a

Ovennevnte metode vil gi oss en rekke tegn.

Du kan bare bare bruke små bokstaver. Du kan generere store bokstaver som:

('A' ... 'Z').to_a

Trinn 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ølge

I 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
=> "mixwnezhjckusqogyprvfdblta"

Å 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 med
"BC1U0HF3ZQBTQHTYN72VXRLWS6GL4KPAGPDK98UAWSJIJFNEIMCOZEY5ROMVDX"

Anta 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 med
=> "Ncnerkw78ms"

Metode 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'
=> sant

Generere en tilfeldig base64 -verdi som:

Securerandom.Base64
=> "cxzpk1zbbbc/odu1fsapwg =="

For hex, skriv inn:

Securerandom.hex
=> "86DC7BCEC3962153EFEF36585696920F"

Til slutt ved hjelp av byte:

Securerandom.Random_bytes
=> "\ xe6) \ x8e \ xf4 \ xd9 \ xe1w \ x1du \ xa2 \ x7f \ x86 \ x97z \ b.""

Lukking

Denne guiden dekker hvordan du genererer tilfeldige verdier i Ruby ved hjelp av forhåndsbygde metoder og moduler.