number generator

Raymond Hettinger python at
Wed Mar 14 09:44:03 CET 2007

> To make the solutions equi-probable, a simple approach is to
> recursively enumerate all possibilities and then choose one of them
> with random.choice().

Since people are posting their solutions now (originally only hints
were provided for the homework problem), here's mine:

def genpool(n, m):
    if n == 1:
        yield [m]
        for i in xrange(1, m):
            for rest in genpool(n-1, m-i):
                yield rest + [i]

import random
print random.choice(list(genpool(n=4, m=20)))

More information about the Python-list mailing list