Sprawdź API dla SecureRandom: http://rails.rubyonrails.org/classes/ActiveSupport/SecureRandom.html
wierzę szukasz dla inna metoda: #random_number.
SecureRandom.random_number(a_big_number)
Ponieważ #hex zwraca liczbę heksadecymalną, nietypowe byłoby zapytanie o wynik losowy zawierający tylko znaki numeryczne.
W podstawowych przypadkach wystarczy użyć #rand.
rand(9999)
Zmieniano:
nie jestem świadomy biblioteki, która generuje losową liczbę określonej długości, ale wydaje się dość proste do napisania jednego. Oto moja przepustka na to:
def rand_by_length(length)
rand((9.to_s * length).to_i).to_s.center(length, rand(9).to_s).to_i
end
Sposób #rand_by_length bierze całkowitą długość określając jako param i próbuje wygenerować losową liczbę cyfr max na podstawie długości. Centrum ciągu # służy do uzupełniania brakujących liczb znakami liczb losowych. Najgorsze przypadki wywołania #rand dla każdej cyfry o określonej długości. To może zaspokoić twoją potrzebę.
Dzięki za sprostowanie na "liczbę szesnastkową" Chciałbym wyjaśnić to dalej, faktycznie szukałem losowej liczby o określonej długości (pozwala s ay 8), hex ogranicza długość, więc zastanawiasz się nad czymś podobnym, SecureRandom może to generować tylko liczby. SecureRandom.random_number (n) prawdopodobnie nie pozwoli na to? [random_number] (http://rails.rubyonrails.org/classes/ActiveSupport/SecureRandom.html#M000733) – swapab
Zaktualizowałem swoją odpowiedź na podstawie Twojego komentarza. – rossta
To jest fajne ... Bardzo dziękuję za ten kod ... – swapab