class Array
# returns a random element of the array
def rand
self[Kernel.rand(length)]
end
end
class Hash
# returns a random key-value pair
def rand
temp_key = self.keys.rand
[temp_key, self[temp_key]]
end
end
module Kernel
# random_n_digit_number(1) returns a number between 1 and 9 inclusive
# random_n_digit_number(3) returns a number between 100 and 999 inclusive
def random_n_digit_number(n)
raise ArgumentError, "expected digit length to be greater or equal to 1, received #{n.inspect}" if !n.is_a?(Numeric) || n < 1
return rand(10) if n == 1
min = 10**(n-1)
max = (10**n)-1
rand(max-min+1) + min
end
end
class Range
# (1..10).rand returns a number between 1 and 10 inclusive
# (1...10).rand returns a number between 1 and 9 inclusive
# (2..2).rand returns 2
# (2...2).rand is equivalent to 2 + Kernel.rand()
# (Date.parse('2008-08-01')..Date.parse('2008-08-31')).rand returns a date between the first and last dates
inclusive
# (Time.now..(Time.now+60)).rand returns a time between the first and last times inclusive
def rand
self.first + Kernel.rand(self.last - self.first + (self.exclude_end? ? 0 : 1))
end
end