At 05:47 PM 3/10/2007, Paul Rubin wrote: >The fencepost method still seems to be simplest: > > t = sorted(random.sample(xrange(1,50), 4)) > print [(j-i) for i,j in zip([0]+t, t+[50])]
================================= M = 50 N = 4 def sumRndIntRubin(M, N): import random t = sorted(random.sample(xrange(1,M), N-1)) lst = [(j-i) for i,j in zip([0]+t, t+[M])] print t print t + [M] print [0] + t print lst print sum(lst) sumRndIntRubin(M, N) ==================================== [6, 20, 31] [6, 20, 31, 50] [0, 6, 20, 31] [6, 14, 11, 19] 50 I understand what zip() and random.sample() are doing, and the above helps me get inside the fencepost method, but I don't understand WHY it works, or how in the world anyone could have devised it. It is truly magical to me! BTW I did see this in this thread, "Suppose you have a fixed telegraph pole at N and a fixed telegraph pole at M, and you're given 5 more telegraph poles..." (Gerard Flanagan), but even now I can't take it anywhere. I guess I'm just a dim bulb. (I thought I was a fairly smart guy until I took up Python.) Dick Moores -- http://mail.python.org/mailman/listinfo/python-list