Pokud se chcete dozvědět, jak generovat náhodná čísla & řetězce v Ruby, pak jste na správném místě.
protože to je přesně to, o čem tento článek je!
s náhodným číslem si můžete vybrat náhodný prvek z pole, vybrat vítěze ze seznamu, generovat kostky, atd.
v Ruby existuje mnoho způsobů, jak generovat náhodná čísla s různými vlastnostmi.
například …
metodu rand lze použít 3 způsoby:
- Bez argumentů,
rand
vám desetinné číslo mezi 0 & 1 (stejně jako 0.4836732493) - S celočíselnou argument (
rand(10)
) se dostanete nové číslo mezi 0 & číslo - S řadou argument (
rand(1..20)
) dostanete číslo mezi začátkem rozpětí & konec rozsahu
Další způsoby generování náhodnosti v Ruby patří:
- Pole#shuffle metoda
- Array#vzorku metoda
- třídy SecureRandom
Pojďme na některé příklady!
Generování Náhodných Čísel
můžete Ruby generovat náhodná čísla pomocí rand metoda:
Rand vyrábí čísla s plovoucí desetinnou čárkou (0.4836732493
) pokud je volána bez argumentů.
můžete předat argument rand
a vygenerovat číslo začínající od nuly až po (ale nezahrnující) toto číslo.
rand 100> 41
generování náhodných čísel Ruby je opravdu snadné, ale co když potřebujete, aby číslo bylo v určitém rozsahu, místo aby začínalo od nuly?
není problém!
můžete použít rozsah, abyste získali přesně to, co potřebujete.
Příklad:
rand 200..500> 352
Bezpečné Ruby Náhodných Čísel,
čísla produkován rand by mohlo být dost pro jednoduché aplikace…
…ale pokud chcete, aby jejich použití pro bezpečnostní účely —jako generování tokenu pro obnovení hesla— pak byste měli použít SecureRandom, který je součástí Ruby standardní knihovny.
SecureRandom semena jeho generátor z /dev/urandom na Unixových systémech & na windows používá CryptAcquireContext / CryptGenRandom API.
zde je příklad:
require 'securerandom'SecureRandom.random_number> 0.232
jak vidíte, funguje to hodně jako rand
, můžete také předat maximální číslo.
příklad:
SecureRandom.random_number(100)> 72
SecureRandom má k dispozici další výstupní formáty.
pomocí hex
lze vygenerovat hexadecimální řetězec s pevnou šířkou.
SecureRandom.hex> "87694e9e5231abca6de39c58cdfbe307"
Ruby 2.5 představil novou metodu, která vytváří náhodné alfanumerické řetězce:
SecureRandom.alphanumeric> "PSNVXOeDpnFikJPC"
Jak Vybrat Náhodné Prvky Z Pole
:
možná Budete chtít, aby si náhodný výběr ze seznamu.
můžete to zkusit:
.shuffle.first> 30
Ale Ruby má vzorek, metodu, která je vhodnější (a rychlejší) pro tento úkol:
.sample> 5
můžete použít vzorek pro rozsahy, tento kód generuje náhodné dopis:
('a'..'z').to_a.sample> b
můžete Si projít celé argument vzorek, aby si N unikátních prvků z pole:
.sample(2)>
je také možné předat vlastní generátor náhodných čísel jako argument:
.sample(random: SecureRandom)
Ruby Náhodné Řetězce
konečný náhodnost aplikace je generovat náhodný řetězec s vlastní znakovou sadu. Zde je Kód:
def generate_code(number) charset = Array('A'..'Z') + Array('a'..'z') Array.new(number) { charset.sample }.joinendputs generate_code(20)
zde se děje několik věcí.
nejprve připravíme naši znakovou sadu pomocí rozsahů a převedeme je na pole. Pak využijeme volání Array.new
s blokem, což nám umožňuje inicializovat pole velikosti n s hodnotami produkovanými blokem.
tento kód vytvoří řetězce následujícího tvaru: TufwGfXZskHlPcYrLNKg
.
můžete vyladit znakovou sadu tak, aby vyhovovala vašim potřebám.
setí generátoru náhodných čísel
pokud chcete kontrolovat, jaká čísla jsou generována při použití metody jako rand
, můžete nastavit semeno.
co je semeno?
semeno je číslo, které zahajuje posloupnost náhodných čísel.
Všechna vygenerovaná čísla jsou odvozena z tohoto semene.
proto je kvalita semene obvykle klíčem k vytvoření dobré posloupnosti náhodných čísel.
Ruby již stará, že pro vás (použijte SecureRandom
pokud budete potřebovat další zabezpečení), ale v některých případech (většinou testování & ladění), možná budete chtít nastavit tuto semen sami.
můžete to provést metodou srand
.
Kernel.srand(1)
s tímto semenem budete přesně vědět, jaká čísla vám generátor dá.
pro číslo 1 jako osivo:
Array.new(5) { rand(1..10) }#
pokud znovu nastavíte osivo na 1, sekvence začne na 6, pak 9, 10 atd.
závěr
to je ono! Nyní jste připraveni začít používat náhodnost ve svých programech Ruby 🙂
našel tento příspěvek užitečný?
sdílejte to se svými přáteli & přihlaste se k odběru mého zpravodaje, abyste si nenechali ujít nic nového!