> Hey Tutors > > I saw a lot of responses...After analyze them I have resumed two > approaches > > 1.- Generate a random number from 0 to 99999999 and fill this number with > zeros (Almost everyone's approach) > 2.- Generate 8 random numbers and join them (Pietro and someone else) > > Which one of this is more randomic? I mean which one of these has lower > chances to get duplicates? > Until now I'm using approach number 2.......Unless anyone has something > against it...
Frankly, I would probably prefer #1 because it's probably faster. (You're just generating one number, and calling 1or 2 functions on it as opposed to at least 1 random and 1 function for each digit) Secondly, in both cases, there is the chance that you will get duplicates~~ So the best way to do that is save passwords already generated in a list. ###### Try this ####### import random import cPickle ## This is to save passwords already generated between program runs. def getlist(): try: fileobj = file("passwords.lst","r") returnlist = cPickle.load(fileobj) fileobj.close() except IOError: returnlist = [] return returnlist def generate(): return str(random.randrange(0,99999999)).zfill(8) ## Not that this is the best, but it is concise def close(li): obj = file("passwords.lst","w") cPickle.dump(li,obj) obj.close() masterlist = getlist() num = 0 while 1: while num in masterlist: num = generate() masterlist.append(num) print num m = raw_input() if m == 'quit': close(masterlist) break ###################### Okay, I believe it will work, I haven't tested it though. Any problems, grouch at me, please. Respectfully, Jacob _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor