How to generate random unique 16 digit number in asp.net without collision

前端 未结 1 1766
终归单人心
终归单人心 2021-01-01 05:04

how can i generate 16 digit unique random numbers without any repetition in c# asp.net, as i have read the concept of GUID which generate characters along with numbers but i

相关标签:
1条回答
  • 2021-01-01 05:33

    You can create a random number using the Random class:

    private static Random RNG = new Random();
    
    public string Create16DigitString()
    {
      var builder = new StringBuilder();
      while (builder.Length < 16) 
      {
        builder.Append(RNG.Next(10).ToString());
      }
      return builder.ToString();
    }
    

    Ensuring that there are no collisions requires you to track all results that you have previously returned, which is in effect a memory leak (NB I do not recommend that you use this - keeping track of all previous results is a bad idea, rely on the entropy of a random string of up to 16 characters, if you want more uniqueness, increase the entropy, but I shall include it to show how it could be done):

    private static HashSet<string> Results = new HashSet<string>();
    
    public string CreateUnique16DigitString()
    {
      var result = Create16DigitString();
      while (!Results.Add(result))
      {
        result = Create16DigitString();
      }
    
      return result;
    }
    
    0 讨论(0)
提交回复
热议问题