> 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] else: 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))) -- http://mail.python.org/mailman/listinfo/python-list