Hogyan hozzunk létre véletlen számok & karakterláncok Ruby

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:

ruby random

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!

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.

Previous post hogyan kap egy kapu Pass a repülőtéren [keresztül biztonsági]
Next post Jay Leno megvásárolja a Seafair condos — t