Creating a unique alphanumeric 10-character string

前端 未结 7 2152
青春惊慌失措
青春惊慌失措 2020-12-06 12:32

I\'m looking to create a simple short-lived reservation system, and I\'d like to generate confirmation numbers that are

  • unique
  • random-looking
相关标签:
7条回答
  • 2020-12-06 12:34

    use a guid? 16 characters, though if you really don't care about collision, you could just choose the first n characters.

    0 讨论(0)
  • 2020-12-06 12:37

    There should be no difference in the randomness of any given bit of a SHA-1 hash, so that's possible. Another way would be to fold the hash into itself using XOR until you have 60 bits worth of data, then encode it using Base 64 to get a mostly alpha-numeric result.

    This is only necessary if you want to be able to generate the same Id repeatedly for the same input data. Otherwise, if a random id that you generate once, and hold onto after that, use Anders' suggestion. If you get a conflict, just generate another one.

    0 讨论(0)
  • 2020-12-06 12:49

    If it's really just 500, then pre-generate 20,000 of them, into a table, then get the "next unused one" when you need it.

    0 讨论(0)
  • 2020-12-06 12:53

    Here's one way to do it in Perl:

    sub get_random_name()
    {
      my @chars=('a'..'z','A'..'Z');
      my $random_string;

    foreach (1..22) { # rand @chars will generate a random # number between 0 and scalar @chars $random_string .= $chars[rand @chars]; } return $random_string . "-" . time(); }

    I don't remember how long the time() part is, so you may have to adjust the numbers to fit your length. You can also remove that part if you don't need it.

    0 讨论(0)
  • 2020-12-06 12:54

    In C# you can use http://www.dotnetfunda.com/forums/thread1357-how-do-generate-unique-alpha-numeric-random-number-in-aspnet.aspx (the super easy way, they say)

    0 讨论(0)
  • 2020-12-06 12:58

    You can use whatever, even a plain random number generator; however, you should check that the reservation code isn't already present. If this is the case, add characters ('x') to the string (date+user) until you get a new random/sha1/etc.

    I'm only looking to have ~500 reservations, so I don't imagine high likelyhood of collissions.

    Another stupid idea: generate 1000 or 2000 unique random numbers with the desired properties, store them somewhere, and assign them to the users as they register :)

    0 讨论(0)
提交回复
热议问题