# File lib/more/facets/random.rb, line 68 def at_rand first, last = first(), last() if first.respond_to?(:random_delta) # TODO: work on this!!! begin first.random_delta(last, exclude_end?) rescue to_a.at_rand end else to_a.at_rand end ##elsif first.respond_to?(:succ) ## # optimized algorithm ## if (Fixnum === first || Bignum === first) && ## (Fixnum === last || Bignum === last) ## last -= 1 if exclude_end? ## return nil if last < first ## return Random.number(last - first + 1) + first ## end ## # standard algorithm ## return to_a.at_rand ##elsif Numeric === first && Numeric === last ## return nil if last < first ## return nil if exclude_end? && last == first ## return (last - first) * Random.number + first ##else ## return nil ##end end