From: Yohanes Santoso Date: 2005-07-19T05:26:24+09:00 Subject: Re: [SOLUTION] [QUIZ] Sampling (#39) hp gobelli writes: > i = -1 > range = min_val = 0 > sub_limit = limit / members > steps = (limit / sub_limit).ceil.to_i > (0...steps).each do |step| > min_val = (sub_limit * step).floor > range = sub_limit > if i >= min_val > min_val = i + 1 > range = sub_limit * step - i > end > i = (rand(1000.0 * range) / 1000.0 + min_val).floor > puts i > end > Regards, > Paolo. seems similar to: from, to, segment_amt = 0, ARGV[1].to_i, ARGV[0].to_i segment_size = (to - from) / segment_amt segment_amt.times { next_random = from + rand(segment_size) from += segment_size puts next_random } but the people in the mailing list has 'condemned' algorithm producing non-uniformly distributed random numbers :) YS.