On Sat, 03 Nov 2012 00:13:19 +0300, Andriy Kornatskyy wrote: > Requirements for `account number` generator: > > 1. Issue pseudo random consistent number (must be unique for dozen > millions of records)
How much randomness do you need? From the perspective of any one user, a simple incrementing counter returns arbitrary values, which may be "close enough" to random. last_num = 103872 # Pick an arbitrary starting value. def get_account_number(): """Return the next account number.""" global last_num last_num += 1 return last_num Stick that value in a database instead of a global, and you're done. What are the consequences of people guessing account numbers? If the consequences are serious, then you need to make account numbers cryptographically strong. If the account number alone is not important, then you don't. > 2. Easy check validity (without a need to make a database call) Add a check digit to the number you generate. There are all sorts of ways to do that. Here are two examples: http://code.activestate.com/recipes/577692 http://code.activestate.com/recipes/577691 > Interested? Read more here: If you ask a question here, please keep the discussion here, don't split it to your personal blog. Tell us your requirements in more detail, and we will try to help you. -- Steven -- http://mail.python.org/mailman/listinfo/python-list