Here is my sample, it sounds like some other folks did a moving window
like this, and that some people also thought it wasn't truly random.
As far as I'm concerned, it's random enough ;)
This was a fairly fun quiz. I was thinking of also trying to do
something along the lines of picking a random number within the range,
and then picking from within the resulting ranges. It would avoid one
having to sort the results, and you wouldn't get collisions. Maybe
I'll whip it up later.
------------------------------------------------
Tiny bit of code
------------------------------------------------
# Moving window Sample
# Adam Sanderson
max = ARGV.pop.to_i
samples = ARGV.pop.to_i
step = max / samples
min = -step
samples.times{
puts( (min += step) + rand(step) )
}
------------------------------------------------
Results
------------------------------------------------
netghost@mu /cygdrive/c/Projects
$ time ruby number_sample.rb 5_000_000 1_000_000_000 > num_res.txt
real 0m36.757s
user 0m0.015s
sys 0m0.000s
netghost@mu /cygdrive/c/Projects
$ tail num_res.txt
999998016
999998349
999998503
999998767
999998840
999999156
999999281
999999530
999999779
999999987
netghost@mu /cygdrive/c/Projects
$ head num_res.txt
40
263
560
640
925
1003
1288
1428
1626
1901