Jak Generovat Náhodná Čísla A Řetězce v Ruby

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:

ruby náhodné

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!

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.

Previous post Jak se Dostat Bránou Projít na Letišti Přes Bezpečnostní]
Next post Jay Leno nákupy Seafair byty