number generator

Dick Moores rdm at
Wed Mar 14 01:53:41 CET 2007

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]

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

More information about the Python-list mailing list