#!/usr/bin/ruby members,limit = ARGV.map{|x|x.to_i} t1=Time.now #found = (0...members).inject({}){|h,x|h[x]=false;h} found={} #members.times { # begin n=rand(limit) end while found[n] # found[n]=1 #} while found.size/dev/null calc: 1.711008, sort: 0.539161, output: 10.19322 real 0m12.456s user 0m12.420s sys 0m0.040s olaf@tack:~/doc/mydocs/ruby/quiz$ olaf@tack:~/doc/mydocs/ruby/quiz$ olaf@tack:~/doc/mydocs/ruby/quiz$ time ./sample 1000000 200000000 >/dev/null calc: 3.684069, sort: 1.125714, output: 37.525631 real 0m42.349s user 0m41.870s sys 0m0.220s olaf@tack:~/doc/mydocs/ruby/quiz$ olaf@tack:~/doc/mydocs/ruby/quiz$ olaf@tack:~/doc/mydocs/ruby/quiz$ olaf@tack:~/doc/mydocs/ruby/quiz$ olaf@tack:~/doc/mydocs/ruby/quiz$ time ./sample 2000000 400000000 >/dev/null calc: 7.922936, sort: 2.368247, output: 148.857243 real 2m39.168s user 2m36.870s sys 0m0.720s olaf@tack:~/doc/mydocs/ruby/quiz$ olaf@tack:~/doc/mydocs/ruby/quiz$ ./itest.rb