On Wed, Feb 09, 2011 at 11:16:07AM -0500, Uri Guttman wrote: > >>>>> "MB" == Mike Blezien <mick...@frontiernet.net> writes: > > >> as i said a simple solution is to slice up the 24 hours into fixed > >> intervals. then pick a random time INSIDE each interval. random enough > >> for those types of people. this is close to one message an hour so there > >> is plenty of variability within each hour. and the coding is trivial. > > MB> Uri, > > MB> that's what I'm working on at the moment, trying to randomize the > MB> intervals after splitting up the 24hr period. > > so what is taking so long? it is about 2 lines of code! seriously, just > do int( rand( 60 ) and send it out that minute within the hour. (adjust > 60 for the actual period from splitting the day).
"For every complex problem there is an answer that is clear, simple, and wrong." H. L. Mencken. Of course you can redefine the problem this way, but it's more interesting to solve the original problem. To go with Rob's solution, here's something that's (more) correct: #!/usr/bin/perl use strict; use warnings; my ($messages, $time_period) = @ARGV; # set up initial distribution my @times = map rand, 1 .. $messages; my $duration; $duration += $_ for @times; # spread over required time period my $factor = $time_period / $duration; $_ *= $factor for @times; # calculate actual times my $time = 0; $time = $_ += $time for @times; # shift down my $shift = rand $times[0]; $_ -= $shift for @times; my $n; printf "%2d. %02d:%02d\n", ++$n, $_, ($_ - int $_) * 60 for @times; -- Paul Johnson - p...@pjcj.net http://www.pjcj.net -- To unsubscribe, e-mail: beginners-unsubscr...@perl.org For additional commands, e-mail: beginners-h...@perl.org http://learn.perl.org/