From: Tanaka Akira Date: 2012-06-28T17:03:04+09:00 Subject: Re: Is this the correct use of rand? 2012/6/28 Emeka Patrick : > > This code calls a code blocklimittimes, each time passing in a random > number betweenminandmax: > > def pick_random_numbers(min, max, limit) > limit.times { yield min+rand(max+1) } > end > rand(max+1) may generates a number between 0 and max. So, pick_random_numbers produces numbers between min and min+max. % ruby -e ' def pick_random_numbers(min, max, limit) limit.times { yield min+rand(max+1) } end pick_random_numbers(10,10,5) {|n| p n } ' 11 19 20 20 13 % ruby -e ' def pick_random_numbers(min, max, limit) limit.times { yield min+rand(max+1) } end ary = [] pick_random_numbers(10,10,500) {|n| ary << n } p ary.minmax ' [10, 20] I recommend rand(min..max) if you use Ruby 1.9.3. -- Tanaka Akira