-6

Modify the follwing code to generate 13 digit unique random number in c#

public static string GenerateUniqueRandomNumbers()
    {
        Random generator = new Random();
        String r = generator.Next(0, 1000000).ToString("D6");
        if (r.Distinct().Count() == 1)
        {
            r = GenerateUniqueRandomNumbers();
        }
        return r;
    }
hornet
  • 5
  • 2
  • 5

4 Answers4

0

Very malformed question

IF your problem is that maxValue cannot have 13 digit, a quick workaround could be concatenate 2 strings

    String r = generator.Next(0, 1000000).ToString("D6");
    r += generator.Next(0, 10000000).ToString("D7");
Lorenzo
  • 91
  • 5
0

For 13 digits we need long variable but Random.Next method does not support long dataType it only support Integer data type. Hence , we have to do something tricky.

Check the below code to generate generate 13 digit number.

    Random generator = new Random();
    String r = generator.Next(0, 999999).ToString("D13");

Note: I have used ToString("D13") to get the 13 digits value.

vijay sahu
  • 765
  • 1
  • 7
  • 29
0
public static string GenerateUniqueRandomNumbers()
    {
        Random generator = new Random();
        String r = generator.Next(0, 1000000).ToString("D6");
        r += generator.Next(0, 10000000).ToString("D7");
        if (r.Distinct().Count() == 1)
        {
            r = GenerateUniqueRandomNumbers();
        }
        return r;
    }
hornet
  • 5
  • 2
  • 5
  • That `if (r.Distinct().Count() == 1)` only blocks numbers that are using just 1 digit (like 11111). It doesn't know about previously generated 13-digit number strings – Hans Kesting Nov 27 '19 at 10:59
0
    Random generator = new Random();
    string s = "380003562";
    s += generator.Next(0, 0000000).ToString("D"+(13-s.Length).ToString());

With this code, if you are using an existing number, you can quickly bring it to 13 digits or any digit number you want.