Dick Moores <[EMAIL PROTECTED]> wrote: > But let's say there is one more constraint--that for each n of the N > positive integers, there must be an equal chance for n to be any of > the integers between 1 and M-N+1, inclusive. Thus for M == 50 and N >== 5, the generated list of 5 should be as likely to be [1,46,1,1,1] > as [10,10,10,10,10] or [14, 2, 7, 1, 26].
I don't think what you wrote actually works. Any combination including a 46 must also have four 1s, so the digit 1 has to be at least 4 times as likely to appear as the digit 46, and probably a lot more likely than that. On the other hand, making sure that each combination occurs equally often (as your example might imply) is doable but still leaves the question whether the order of the numbers matters: are [1,46,1,1,1] and [1,1,46,1,1] the same or different combinations? The sorted/sample/xrange solution seems to give an even distribution or ordered combinations, I don't know what algorithm (short of enumerating all possible solutions and choosing one at random) gives an even distribution when the ordering doesn't matter. -- http://mail.python.org/mailman/listinfo/python-list