tweaking random number

Peter Otten __peter__ at web.de
Wed May 9 04:30:10 EDT 2012


Nikhil Verma wrote:

> Hi All
> 
> I want to generate a random number of 8 digits which involve 3 number and
> 5 digits.
> Like this :-
> 
> def random_number():
>     # do something
> 
> random_number()
> "123abcde" # first 3 numbers and 5 letters after the numbers.
> 
> I am able to generate the random number 8 digit like this:-
> 
> def random_number():
>     characters = list(string.ascii_lowercase + string.ascii_uppercase\
>                     + string.digits)
>     coll_rand = []
>     for i in range(8):
>         random.shuffle(characters)
>         coll_rand.append(characters[0])
>     return ''.join(coll_rand)
> 
> This generates like this "Kkrgt56r"
> 
> Thanks in advance

If you generalize your random_number() function

>>> import random, string
>>> def random_code(n=8, 
chars=string.ascii_lowercase+string.ascii_uppercase+string.digits):
...     return "".join(random.choice(chars) for _ in range(n))
... 
>>> random_code()
'NgcLhYdR'
>>> random_code()
'j9gafcHh'
>>> random_code(chars="123ABC")
'C311BA31'
>>> random_code(n=4)
'MAsV'

you can use it as a building block quite easily:

>>> def three_five():
...     return random_code(3, string.digits) + random_code(5, 
string.ascii_lowercase + string.ascii_uppercase)
... 
>>> three_five()
'656xEWmd'
>>> three_five()
'589XqZcI'
>>> three_five()
'168iOOIM'





More information about the Python-list mailing list