ha azt szeretnénk, hogy megtanulják, hogyan kell generálni véletlen számok & karakterláncok Ruby, akkor te vagy a megfelelő helyen.
mert pontosan erről szól ez a cikk!
egy véletlen számot akkor válasszon egy véletlen elemet egy tömb, válasszon egy győztes a listából, generál kocka tekercs, stb.
a Ruby – ban sokféle módon lehet véletlenszerű számokat generálni különböző tulajdonságokkal.
például …
a rand módszer 3 módon használható:
- argumentumok nélkül,
rand
ad egy lebegőpontos szám között 0 & 1 (mint 0.4836732493) - egy egész argumentum (
rand(10)
) kapsz egy új egész szám között 0 & ez a szám - egy tartomány argumentum (
rand(1..20)
) kapsz egy egész szám között a tartomány kezdete & a tartomány vége
a véletlenszerűség generálásának egyéb módjai a Ruby-ban a következők:
- az Array # shuffle módszer
- az Array#minta módszer
- a SecureRandom osztály
menjünk át néhány példát!
véletlen számok generálása
Ruby véletlen számokat generálhat a rand módszerrel:
a Rand lebegőpontos számokat (0.4836732493
) állít elő, ha argumentumok nélkül hívják meg.
átadhat egy argumentumot rand
– nak, hogy nullától kezdődő számot hozzon létre (de nem tartalmazza) ezt a számot.
rand 100> 41
a Ruby véletlenszám-generálás nagyon egyszerű, de mi van, ha a számnak egy adott tartományban kell lennie, ahelyett, hogy nulláról indulna?
nem probléma!
használhat egy tartományt, hogy pontosan megkapja, amire szüksége van.
példa:
rand 200..500> 352
biztonságos Ruby véletlen számok
a RAND által előállított számok elegendőek lehetnek egy egyszerű alkalmazáshoz…
…de ha biztonsági célokra szeretné használni őket —például jelszó— visszaállítási token létrehozására -, akkor használja a SecureRandom-ot, amely a Ruby standard könyvtár része.
SecureRandom magok a generátor /dev/urandom Unix rendszereken & windows használja a CryptAcquireContext / CryptGenRandom API.
Íme egy példa:
require 'securerandom'SecureRandom.random_number> 0.232
mint látható, ez működik egy csomó, mint rand
, akkor is át egy max számot.
példa:
SecureRandom.random_number(100)> 72
a SecureRandom más kimeneti formátumokkal is rendelkezik.
a hex
használatával hexadecimális rögzített szélességű karakterláncot hozhat létre.
SecureRandom.hex> "87694e9e5231abca6de39c58cdfbe307"
a Ruby 2.5 új módszert vezetett be, amely véletlenszerű alfanumerikus karakterláncokat állít elő:
SecureRandom.alphanumeric> "PSNVXOeDpnFikJPC"
Hogyan válasszunk véletlenszerű elemeket tömbökből
most:
lehet, hogy véletlenszerű választást szeretne kapni egy listából.
kipróbálhatja ezt:
.shuffle.first> 30
de a Ruby rendelkezik a mintamódszerrel, amely jobban megfelel (és gyorsabb) erre a feladatra:
.sample> 5
használhatja a mintát a tartományokhoz, ez a kód véletlenszerű betűt generál:
('a'..'z').to_a.sample> b
egész argumentumot adhat át a mintának, hogy N egyedi elemet kapjon a tömbből:
.sample(2)>
az is lehetséges, hogy adja át az egyéni véletlen generátor argumentumként:
.sample(random: SecureRandom)
Ruby Random Strings
a végső véletlenszerűség alkalmazás egy véletlenszerű karakterlánc létrehozása egyéni karakterkészlettel. Itt van a kód:
def generate_code(number) charset = Array('A'..'Z') + Array('a'..'z') Array.new(number) { charset.sample }.joinendputs generate_code(20)
van itt néhány dolog.
először elkészítjük a karakterkészletet tartományok felhasználásával, majd tömbökké konvertáljuk őket. Ezután kihasználjuk a Array.new
meghívását egy blokkkal, amely lehetővé teszi n méretű tömb inicializálását a blokk által előállított értékekkel.
ez a kód a következő formájú karakterláncokat fogja előállítani: TufwGfXZskHlPcYrLNKg
.
a karakterkészletet az Ön igényeinek megfelelően módosíthatja.
a Véletlenszám-generátor vetése
ha azt szeretné, hogy ellenőrizze, hogy milyen számok keletkeznek, ha olyan módszert használ, mint a rand
, akkor beállíthatja a magot.
mi a vetőmag?
a mag egy olyan szám, amely véletlenszerű számok sorozatát indítja el.
az összes generált szám ebből a magból származik.
ezért a vetőmag minősége általában a véletlenszerű számok jó sorozatának előállításának kulcsa.
a Ruby már gondoskodik erről az Ön számára (használja a SecureRandom
– et, ha extra biztonságra van szüksége), de bizonyos esetekben (főleg a & hibakeresés tesztelése) érdemes ezt a magot saját maga beállítani.
ezt a srand
módszerrel teheti meg.
Kernel.srand(1)
ezzel a maggal pontosan tudni fogja, hogy a generátor milyen számokat fog adni.
az 1-es számhoz, mint maghoz:
Array.new(5) { rand(1..10) }#
ha a vetőmagot ismét 1-re állítja, a szekvencia 6, majd 9, 10 stb.
következtetés
ez az! Most már készen áll a véletlenszerűség használatára a Ruby programokban!
hasznosnak találta ezt a bejegyzést?
ossza meg barátaival & iratkozzon fel hírlevelemre, hogy ne hagyjon ki semmi újat!