in reply to Need help with number generator
There was another thread at Biased random number selection which has information on how to optimize the selection process for speed.
But here's the most straightforward (but not necessarily fastest... and not tested) solution:
Hope this helps. Alan# A list of weights; initialized for your problem my @weights = (8, 1, 1); # Count the total of all the counts my $sum; map { $sum += $_; } @weights; # Choose a random number, then find a weighted random result my $target = rand($sum); for (1..@weights) { $target -= $weights[$_]; last if $target <= 0; } print "The number is $_\n";
|
|---|