RDRubyTutorial: Случайные числа в Ruby
декабря 28, 2011 | Published in Ruby, Основы | 1 Comment
В этой статье из цикла RubyDev Ruby Tutorial мы рассмотрим способы генерации случайного числа в Ruby 1.8.x и Ruby 1.9.x. Генерация случайного числа — достаточно тривиальная задача, особенно для Ruby однако некоторые новички даже здесь сталкиваются с проблемами. Кроме того, не все программисты знают о нововведениях в Ruby 1.9 связанных с генерацией случайных чисел.
Самым простым способом получить случайное число в 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.
Что делать, если необходимо сгенерировать число в диапазоне, где минимум не ноль? В Ruby 1.8 у нас есть только один выход:
puts rand(10) + 10 #15 puts rand(10) + 10 #12 puts rand(10) + 10 #10
В таком случае мы генерируем числа от 10 до 19 включительно.
Ruby 1.9 предоставляется другое решение — специальный класс Random:
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
MonkeyPatching way:
class Array def rand_elem self[rand(size)] end end puts [1,1,2,3,5,7,11,13].rand_elem #11
Успехов вам в изучении программирования на Ruby!
декабря 29, 2011 at 19:08 (#)
array.sample() вам в помощь =)