one solution could be irb(main):210:0* class Range irb(main):211:1> def rand irb(main):212:2> return self.begin + Kernel.rand(self.end-self.begin) irb(main):213:2> end irb(main):214:1> end => nil irb(main):215:0> (-10..10).rand => 2 irb(main):216:0> (-10..10).rand => 6 irb(main):217:0> (-10..10).rand => 4 irb(main):218:0> (-10..10).rand => -1 it's a matter of style to write rand(-10..10) or (-10..10).rand but since 10.sin doesn't work, as opposite tosin(10) non object oriented rand(-10..10) is also a nice thing to have.