Ruby generuje losowy ciąg

Ruby generuje losowy ciąg

Losowe ciągi są pomocnymi cechami w różnych przypadkach, takich jak szyfrowanie, nasiona danych i więcej. Chociaż niemożliwe jest utworzenie naprawdę dowolnej wartości za pomocą maszyn deterministycznych, możemy uzyskać zestaw wartości pseudorandomów, które wydają się generowane losowo.

Ten przewodnik pokaże, jak wygenerować losowy ciąg za pomocą Ruby. Ponieważ ciąg jest szeregiem znaków alfanumerycznych, zaczniemy od podstaw i wygenerujemy losowe liczby i znaki.

Generowanie liczby losowej

Zanim skupimy się na generowaniu losowych ciągów w Ruby, dowiedzmy się, jak generować losową liczbę w Ruby.

Używamy metody RAND do generowania liczb losowych. Jeśli wywołasz metodę RAND bez argumentów, generuje ona liczbę pływającą w zakresie 0.0 i 1.0

skraj()
=> 0.041586206067679155

Funkcja RAND pozwala również przekazać liczbę całkowitą jako argument. Jeśli metoda ma dostarczoną wartość liczb całkowitą, wygeneruje losową wartość liczb całkowitą w zakresie 0 do określonej wartości.

Rand (10)
=> 5

W powyższym przykładzie, za każdym razem, gdy uruchamiasz powyższą metodę, otrzymasz wartość od 0 do 10, wyłącznie.

Załóżmy, że chcesz wygenerować liczbę losową w określonym zakresie. W takim scenariuszu możesz określić zakres jako:

zacząć zakończyć

Na przykład, aby wygenerować wartość losową między 30 a 60:

Rand (30… 60)
=> 42

Powyższy przykład wyklucza wartość końcową. Oznacza to, że 60 nie zostanie uwzględnione jako wartość losowa.

Jeśli chcesz dołączyć wartość końcową, użyj notacji podwójnej jako:

Rand (30… 60)
=> 60

Generowanie losowego ciągu

Chociaż istnieją różne sposoby generowania losowego sznurka w Ruby, będziemy trzymać się prostego, który wykorzystuje wbudowane metody i funkcjonalność Ruby.

Krok 1 - Wygeneruj szereg znaków

Pierwszą metodą jest wygenerowanie szeregu znaków. Aby to zrobić, użyjemy metody Range w Ruby.

Na przykład następujący kod generuje szereg znaków niższych obudowy.

(„A”… „Z”)

Następnie musimy przekonwertować dane wyjściowe z powyższego kodu na tablicę. Możemy użyć metody TO_A jako:

(„A”… „Z”).to_a

Powyższa metoda da nam szereg znaków.

Możesz używać tylko znaków niższych obudowy. Możesz generować wielkie znaki jako:

(„A”… „Z”).to_a

Krok 2 - Tasfluj wygenerowane znaki

W poprzednim przykładzie generujemy szereg znaków w kolejności sekwencyjnej. Stąd wartości nie są w losowej kolejności.

Aby wprowadzić losowość za każdym razem, gdy blok jest wywoływany, możemy użyć metody shuffle.

Metoda shuffle zwróci nową tablicę z elementami w poprzedniej tablicy tasowanej.

Weź pierwszą przykładową tablicę i posuwaj ją.

(„A”… „Z”).to_a.człapać

W tym przykładzie postacie są tasowane w losowej kolejności za każdym razem, gdy uruchamiamy kod.

Krok 3 - Konwertuj na ciąg

Do tego momentu stworzyliśmy tylko szereg znaków. Następnym krokiem jest konwersja znaków w tablicy na jeden ciąg, który możemy osiągnąć za pomocą metody połączenia.

Na przykład:

to_a.człapać.dołączyć
=> "mixwnezhjckusqogyprvfdblta"

Uruchomienie powyższego kodu zwróci losowy ciąg małych liter.

Krok 4 - Więcej losowości

Możemy wprowadzić większą losowość do naszego wygenerowanego ciągu, wprowadzając wielkie znaki i wartości numeryczne.

Możemy to zrobić przez:

[ *„A”… „Z”, *0… 9, *„A”… „Z”]

Powyższy przykład wygeneruje tablicę wartości małych, wielkich i liczbowych.

Aby je losować, użyj metody shuffle i dołącz, aby utworzyć ciąg. Poniżej znajduje się przykład wyjścia:

[ *„A”… „Z”, *0… 9, *„A”… „Z”].człapać.dołączyć
„BC1U0HF3ZQBTQHTYN72VXRLWS6GL4KPAGPDK98UAWSJIJFNEIMCOZEY5ROMVDX”

Załóżmy, że chcemy uzyskać ciąg o określonej długości. Na przykład, aby wygenerować ciąg długości 10. Możemy przekazać zasięg do metody losu jako:

[ *„A”… „Z”, *0… 9, *„A”… „Z”].Shuffle [0… 10].dołączyć
=> „ncnerkw78ms”

Metoda 2 -Securerandom Moduł

Ruby zapewnia również pakiet Securerandom do generowania losowych ciągów. Obsługuje Hex, Base64 i bajty.

Aby go używać, zaimportuj go jako:

Wymagaj „Securerandom”
=> True

Wygeneruj losową wartość Base64 jako:

Securerandom.Base64
=> "CXZPK1ZBBBC/ODU1FSAPWG =="

W przypadku Hex, wprowadź:

Securerandom.klątwa
=> "86DC7BCEC3962153EFEF36585696920F"

Wreszcie, używając bajtów:

Securerandom.Random_Bytes
=> "\ xe6) \ x8e \ xf4 \ xd9 \ xe1w \ x1du \ xa2 \ x7f \ x86 \ x97z \ b."

Zamknięcie

Ten przewodnik obejmuje sposób generowania losowych wartości w Ruby przy użyciu wstępnych metod i modułów.