Cum se generează numere aleatorii și șiruri în Ruby

dacă doriți să învățați cum să generați numere aleatorii & șiruri în Ruby, atunci sunteți în locul potrivit.

pentru că exact despre asta este vorba în acest articol!

cu un număr aleatoriu Puteți alege un element aleatoriu dintr-o matrice, alege un câștigător dintr-o listă, genera role de zaruri, etc.

în Ruby, există multe modalități de a genera numere aleatorii cu diferite proprietăți.

de exemplu…

metoda rand poate fi utilizată în 3 moduri:

  • fără argumente, rand vă oferă un număr în virgulă mobilă între 0 & 1 (Cum ar fi 0.4836732493)
  • cu un argument întreg (rand(10)) veți obține un nou număr întreg între 0 & acel număr
  • cu un argument interval (rand(1..20)) veți obține un număr întreg între începutul intervalului & sfârșitul intervalului

alte modalități de a genera aleatoriu în Ruby includ:

  • metoda Array # shuffle
  • metoda array#sample
  • clasa SecureRandom

să trecem peste câteva exemple!

generarea de numere aleatoare

puteți genera numere aleatoare Ruby folosind metoda rand:

ruby random

Rand produce numere în virgulă mobilă (0.4836732493) dacă este apelat fără argumente.

puteți trece un argument la rand pentru a genera un număr începând de la zero până la (dar fără a include) acel număr.

rand 100> 41

generarea de numere aleatoare Ruby este foarte ușoară, dar dacă aveți nevoie ca numărul să fie într-un anumit interval în loc să începeți de la zero?

nu este o problemă!

puteți utiliza o gamă pentru a obține exact ceea ce aveți nevoie.

exemplu:

rand 200..500> 352

Secure Ruby Random Numbers

numerele produse de rand ar putea fi suficiente pentru o aplicație simplă…

…dar dacă doriți să le utilizați în scopuri de securitate —cum ar fi generarea unui jeton de resetare a parolei— atunci ar trebui să utilizați SecureRandom, care face parte din biblioteca standard Ruby.

SecureRandom semințe generatorul său de la /dev/urandom pe sistemele Unix & pe windows utilizează API CryptAcquireContext / CryptGenRandom.

Iată un exemplu:

require 'securerandom'SecureRandom.random_number> 0.232

după cum puteți vedea acest lucru funcționează foarte mult ca rand, puteți trece, de asemenea, într-un număr maxim.

exemplu:

SecureRandom.random_number(100)> 72

SecureRandom are alte formate de ieșire disponibile.

utilizarea hex poate genera un șir hexazecimal cu lățime fixă.

SecureRandom.hex> "87694e9e5231abca6de39c58cdfbe307"

Ruby 2.5 a introdus o nouă metodă, care produce șiruri alfanumerice aleatorii:

SecureRandom.alphanumeric> "PSNVXOeDpnFikJPC"

cum să alegeți elemente aleatorii din matrice

acum:

poate doriți să obțineți o alegere aleatorie dintr-o listă.

puteți încerca acest lucru:

.shuffle.first> 30

dar Ruby are metoda de probă care este mai potrivită (și mai rapidă) pentru această sarcină:

.sample> 5

puteți utiliza eșantion pentru intervale, acest cod generează o literă aleatorie:

('a'..'z').to_a.sample> b

puteți trece un argument întreg la eșantion pentru a obține n elemente unice din matrice:

.sample(2)> 

de asemenea, este posibil să treci un generator aleatoriu personalizat ca argument:

.sample(random: SecureRandom)

Ruby Random Strings

aplicația Ultimate randomness este de a genera un șir aleatoriu cu un set de caractere personalizat. Iată codul:

def generate_code(number) charset = Array('A'..'Z') + Array('a'..'z') Array.new(number) { charset.sample }.joinendputs generate_code(20)

se întâmplă câteva lucruri aici.

în primul rând, ne pregătim setul de caractere folosind intervale și convertindu-le în matrice. Apoi profităm de apelarea Array.new cu un bloc, care ne permite să inițializăm o matrice de dimensiune n cu valorile produse de bloc.

acest cod va produce șiruri de următoarea formă: TufwGfXZskHlPcYrLNKg.

puteți modifica setul de caractere pentru a se potrivi nevoilor dvs.

însămânțarea generatorului de numere aleatorii

dacă doriți să controlați ce numere sunt generate atunci când utilizați o metodă precum rand, puteți seta semințele.

ce este sămânța?

sămânța este un număr care începe o secvență de numere aleatoare.

toate numerele generate sunt derivate din această sămânță.

de aceea, calitatea semințelor este de obicei cheia pentru producerea unei secvențe bune de numere aleatorii.

Ruby are deja grijă de asta pentru dvs. (utilizați SecureRandom dacă aveți nevoie de securitate suplimentară), dar în unele scenarii (mai ales testarea depanării &) poate doriți să setați singur această sămânță.

puteți face acest lucru cu metoda srand.

Kernel.srand(1)

cu această sămânță veți ști exact ce numere vă va oferi generatorul.

pentru numărul 1 ca sămânță:

Array.new(5) { rand(1..10) }# 

dacă setați din nou sămânța la 1, secvența va începe la 6, apoi la 9, 10 etc.

concluzie

asta e! Acum sunteți gata să începeți să utilizați aleatoriu în programele dvs. Ruby

ați găsit acest post util?

impartaseste-l cu prietenii tăi & Aboneaza-te la newsletter-ul meu, astfel încât să nu pierdeți nimic nou!

Lasă un răspuns

Adresa ta de email nu va fi publicată.

Previous post cum să obțineți un permis de poartă la aeroport [prin securitate]
Next post Jay Leno cumpără apartamente Seafair