[Tutor] Random module.. or?
Alan Gauld
alan.gauld at btinternet.com
Tue Aug 7 22:38:25 CEST 2007
"Bob Gailer" <bgailer at alum.rpi.edu> wrote
> 10000 games would be distributed thus:
> 1 = 45 pts
> 10 = 30+ pts
> 99989 = 15-25 pts
> so generate a random integer between 1 and 10000.
> if it is <= 1 then 45
> else if it is <= 11 then 30+
> else 15-25
Bob's approach is typical for large data sets, for small data sets
it can be easier to create a statistically representative sample
population then pick on from the population.
Thus if there are 3 possible outcomes and 1 is twice as likely
as 2 which is 4 times as likely as 3 we can create a sample like:
pop = [3,2,2,2,2,1,1,1,1,1,1,1,1]
(List comprehensions, zip and other list building functions can
help generate the population sample.)
Now selecting a single entry from pop will give the right
randomness. This technique has the advantage of a single
random selection but it quickly runs out of steam for complex
data. In that case Bob's approach is better but requires two
random functions.
HTH,
--
Alan Gauld
Author of the Learn to Program web site
http://www.freenetpages.co.uk/hp/alan.gauld
More information about the Tutor
mailing list