Generate a Random Unique 4 digit number

Discussion in 'MS Access' started by GreenMtns, Aug 1, 2008.

  1. GreenMtns

    GreenMtns New Member

    Joined:
    Jul 25, 2008
    Messages:
    1
    Likes Received:
    0
    Trophy Points:
    0
    Occupation:
    Tour Coach Co. Safety Director
    Location:
    Vermont
    Hi
    I am new to this board and am trying to work out a little problem. I have a table of drivers who all have an Primary Key of ID numbers auto generated as each new record is saved. Each driver also has a unique 4 digit number that they use when logging into each vehicle. This has to be a random number to prevent drivers from knowing anyone else's number. As each new driver is added to the record the Random unique number should be automatically generated. I have been through my MS Access VB for Applications Fundamentals book many times and cannot find a solution to this. I would appreciate any suggestions on this.

    Thank You
     
  2. E_E_F

    E_E_F New Member

    Joined:
    Aug 3, 2008
    Messages:
    6
    Likes Received:
    0
    Trophy Points:
    0
    I think a "Truly" random number would not be your best choice in this situation. You would probably be wise to use a algorithm like:

    (prime_number1 ^ record_number ) modulus prime_number2

    Where:

    "prime_number1 ^ record_number" means prime_number1 to power of record_number

    and where:

    prime_number1 and prime_number2 should be around 10000 and relative prime.

    Mind that i.e. (a ^ 10) mod b == ( ( (a ^ 9) mod b ) * a ) mod b
    This way you can create a simple program loop to calculate the power / mod of a larger number.

    This way all values will be unique, but you have to keep the prime_number1 & 2 secret and in a safe place.

    Don't ask me for an algorithm to find primes please.

    For more information you read some more about RSA algorithm.
     
  3. mugnebot

    mugnebot New Member

    Joined:
    Feb 16, 2009
    Messages:
    13
    Likes Received:
    1
    Trophy Points:
    3
    Home Page:
    http://www.sirinevlerhamami.com
    here is a way to get a file name that is really random, it uses the epoch date plus 4 random digits.
    randfile="r$(date +'%s')$(($RANDOM%10))$(($RANDOM%10))$(($RANDOM%10))$(($RANDOM%10))";
    or just the four random digits.
    FourRandDigits="$(($RANDOM%10))$(($RANDOM%10))$(($RANDOM%10))$(($RANDOM%10))";
    oh wait isnt this a bash forum? oh well.
     
    E_E_F likes this.
  4. E_E_F

    E_E_F New Member

    Joined:
    Aug 3, 2008
    Messages:
    6
    Likes Received:
    0
    Trophy Points:
    0
    GreenMtns,

    Combining the date and a random number is a solution, but there is a (very small) chance that a duplicate PIN / ID is generated when two or more ID 's are generated on the same day, so you should check if the ID already exists if you want to be 100% safe.

    If the random were just a PIN, to be combined with additional ID it would not be a problem. Duplicate PIN is common in debit cards, but they must always be combined with a unique ID.

    Furthermore, this solution exeeds the 'four digit criterium'.

    Otherwise it's a simple and good solution, thanks for contributing to the community.
     
  5. apr pillai

    apr pillai New Member

    Joined:
    Dec 17, 2010
    Messages:
    16
    Likes Received:
    12
    Trophy Points:
    0
    Occupation:
    Auditor
    Location:
    India
    Home Page:
    http://www.msaccesstips.com/
    Try this Code:
    Code:
    Public Function RandomNumbers()
    Dim rn As Long, j, k
    Randomize (Timer)
    For j = 1 To 50
      k = Int(Rnd(1) * (9999 - 1000)) + 1000
      Debug.Print k
    Next
    
    
    End Function
    
    
     
    shabbir likes this.

Share This Page

  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice