Re: shuffling elements of a list



Sybren Stuvel wrote:
David C Ullrich enlightened us with:
I thought that the fact that you could use the same trick for
_shuffling_ a list was my idea, gonna make me rich and famous. I
guess I'm not the only one who thought of it. Anyway, you can use
DSU to _shuffle_ a list by decorating the list with random numbers.

This is often done in database queries that need to randomize the data
;-)

Sybren
--
The problem with the world is stupidity. Not saying there should be a
capital punishment for stupidity, but why don't we just take the
safety labels off of everything and let the problem solve itself?
Frank Zappa

DSU seems like a lot of trouble to go through in order to use an O(n
log n) sorting algorithm to do what can be done in O(N) with a few
lines of code. The core code of random.shuffle() shows how easy it is
to do it right:

for i in reversed(xrange(1, len(x))):
# pick an element in x[:i+1] with which to exchange x[i]
j = int(random() * (i+1))
x[i], x[j] = x[j], x[i]

.



Relevant Pages

  • Re: shuffling elements of a list
    ... Do not worry I will be back soon with more shuffling! ... I didn't see any DSU in his post, ... DSU is "Decorate Sort Undecorate" - ... and you want to sort it using some custom compare function. ...
    (comp.lang.python)
  • Re: shuffling elements of a list
    ... David C Ullrich enlightened us with: ... _shuffling_ a list was my idea, gonna make me rich and famous. ... The problem with the world is stupidity. ...
    (comp.lang.python)