Случайные числа ruby


Самым простым способом получить случайное число в Ruby является использование метода rand.
puts rand() #0.7063893161805139
puts rand() #0.5829631459496872
puts rand() #0.7625800525759028

Получение случайных чисел с плавающей точкой редко бывает полезным, чаще всего необходимо целое число.
puts rand(3) #0
puts rand(3) #1
puts rand(3) #1
puts rand(10) #3
puts rand(10) #7
puts rand(10) #8

Если методу rand передать в качестве аргумента целое число, то rand будет генерировать случайные числа в диапазоне от 0 до n-1.

Что делать, если необходимо сгенерировать число в диапазоне, где минимум не ноль?
Random.rand #0.5972754026687639
Random.rand(10) #9


rnd = Random.new
rnd.rand #0.9603713013025631
rnd.rand(10) #7
rnd.rand(10..100) #44

Передавая в качестве аргумента диапазон в метод Random#rand мы получаем случайное целое число из диапазона.
rnd.rand(0.0 .. 9.0) #6.569607064916773

Получение случайного элемента массива:
arr[rand(arr.size)] #3
arr[rand(arr.size)] #13


SecureRandom

SecureRandom - это библиотека представляет собой интерфейс для надежного генератора случайных чисел, который предназначен для генерации session ключа в HTTP cookies.

Для подключения модуля к проекту нужно использовать active_support.
require "active_support"


Использование:

SecureRandom.class #=> Module


Полезные методы:

#hex - метод генерирует случайную строку 16ричными значениями( 0-9 и a-f)
SecureRandom.hex(10) #=> "e928eda0c2ee334954f1"
SecureRandom.hex(13) #=> "ee011e639961d793ccd9b044f7"


#random_bytes - метод генерирует случайную бинарную строку
SecureRandom.random_bytes #=> "\xDEg1\x18\xD7\x05\x87\xB9\xE2\xB8]\xC79'\x9A\xAC"


#random_number - метод генерирует случайное число, типа integer или float
SecureRandom.random_number(100) #=> 32
SecureRandom.random_number #=> 0.23232132331


#urlsafe_base64 - метод генерирует случайную url строку
SecureRandom.urlsafe_base64 #=> "_s-6CfjfGXd5JlHLb6D26g"


#uuid - метод генерирует случайный универсальный идентификатор UUID (Universally Unique IDentifier).
p SecureRandom.uuid #=> "d8f2faee-d74b-4ea1-afdb-a755111222cf"