Ruby: Generisanje random lozinki
Otkriti novi nacin generisanja nasumicne lozinke mi je uvijek bio od interesa.
Random Metoda
Primjeri iz ovog clanka koriste Random metodu/funkciju koja o kojoj mozete vise procitati ovdje. Ovu metodu mozemo testirati tako
sto cemo generisati nasumicni broj. Pokrenite IRB pomocu komande irb
zatim pozovite rand
metodu.
rand
=> 0.8270045384707297
Po defaultu rand vraca decimale a ako metodi dodijelimo argument u vidu broja onda ce rand generisati broj od nule sve do tog broja, ne ukljucujuci broj koji smo naveli kao argument.
rand 200
=> 187
U navedenom primjeru rand je vratio broj izmedju 0
i 200
odnosno broj 187
. Navedeni primjer mozemo dodatno zakomplikovati ako saberemo broj nasumicno generisani broj sa brojem po zelji.
65 + rand(200)
=> 103
U ovom primjeru sabiramo sa brojem 65.
Da generisemo broj odredjenog raspona rand
koristimo na sljedeci nacin
rand 100..400
=> 295
U ovom primjeru rand
je generisao nasumicni broj 295
.
Sample Metoda
Ovu metodu mozemo koristiti ako zelimo da izaberemo nasumicno broj iz zadane liste. U ovom primjeru sample
metoda ce izabrati nasumicno broj iz liste [2, 5, 15, 40, 20, 11]
.
[2, 5, 15, 40, 20, 11].sample
=> 20
Jos jedan nacin da izaberemo nasumicni broj iz liste je vezivanjem metoda shuffle
, first
ili last
.
[2, 5, 15, 40, 20, 11].shuffle.first
=> 11
Nakon sto shuffle
pomijesa brojeve iz liste metoda first
prikaze prvi clan liste.
[2, 5, 15, 40, 20, 11].shuffle.last
=> 15
Nakon sto shuffle
pomijesa brojeve iz liste metoda last
prikaze zadnji clan liste.
Opseg i Sample metoda
Metodu sample
mozemo vezati na niz iz nekog opsega. Recimo kada zelimo generisati nasumicno slovo iz abecede.
('a'..'z').to_a.sample
=> "l"
Slican primjer ali ovaj put sa opsegom brojeva od 0
do 99
.
(0..99).to_a.sample
=> 88
Nekoliko primjera kako pomocu Ruby
generisati random lozinke
Prvi primjer
Pokrenute IRB pomocu komande irb
zatim prekucajte kod ispod
(0...8).map { (65 + rand(26)).chr }.join
Takodjer isti kod mozete pokrenuti direktno iz CLI
ruby -e "puts (0...8).map { (65 + rand(26)).chr }.join"
Drugi primjer
(0...50).map { ('a'..'z').to_a[rand(26)] }.join
Treci primjer
charset = [*'a'..'z', *'A'..'Z'].sample(30).join