> I'm thinking that just for the hell of it I could use urandom() as a > source of random decimal digits. Or in a coin tossing program. > Here's > a list of 7817 '1's and 0's generated by urandom(): > > >>> from os import urandom > >>> lst = list(urandom(1000000)) > >>> tosses = [y for y in lst if y in '01'] > >>> len(tosses) > 7817 > >>> > > Would this be a better random source than choice([0,1]), which uses > random()?
It depends on what you mean by better. Its not really any more random if thats what you mean, it might be faster but I doubt if by much. I assume that choice simply divides random by the number of options and selects by index. In pseudo code: def choice(seq): ran = random() # number between 0,1 num = 1/len(seq) # 4 numbers means quarter interval? for n in range(1,len(seq)+1): if ran < num * n: break return seq[n-1] That probably has some boundary errors but I'd guess its how it works, and if written in C is probably faster than generating a big list then extracting the 1s and zeros into another list. But in matters of timing its better to test than guess... :-) Alan G. _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor