Dick Moores wrote: > http://docs.python.org/lib/module-random.html says, > > "shuffle( x[, random]) > Shuffle the sequence x in place. The optional argument random is a 0-argument > function returning a random float in [0.0, 1.0); by default, this is the > function random()." > > >>> from random import shuffle, random > >>> lst = ["a", "b", "c", "d"] > >>> shuffle(lst) > >>> lst > ['c', 'b', 'd', 'a'] > >>> shuffle(lst, random) > >>> lst > ['d', 'c', 'b', 'a'] > >>> > > I can't see that shuffle(a) is any different from shuffle(a, random). Is it? > And > how? > The docs say that shuffle(a) *is* the same as shuffle(a, random). If you don't supply a second argument, the function random() is used. So passing random as the second arg is the same as omitting the second arg.
One reason to provide your own random function would be if you have one that is more random than the standard function, for example os.urandom() or a function based on an external random source such as http://www.fourmilab.ch/hotbits/. The random number generator in Python (Mersenne twister) is very high quality but that hasn't always been the case and it is still deterministic. You might be interested in the Wikipedia article: http://en.wikipedia.org/wiki/Random_number_generator http://en.wikipedia.org/wiki/Mersenne_twister Trying the two versions once each, getting different results and saying you can't see that they are different is...an interesting approach :-) But seriously, even with a poor random function you would have to call shuffle many times and analyze the entire body of results carefully to see any problem. Kent > Thanks, > > Dick Moores > > ------------------------------------------------------------------------ > > _______________________________________________ > Tutor maillist - Tutor@python.org > http://mail.python.org/mailman/listinfo/tutor > _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor