# [Tutor] Generate 8 digit random number

Jacob S. keridee at jayco.net
Sat Sep 3 02:27:29 CEST 2005

```> 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
program runs.

def getlist():
try:
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):
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,