Generate Random Number And Random String In C#

C# Random Int Number

 
C# Random class provides functionality to generate random numbers in C#. The Random class constructors have two overloaded forms. It takes either no value or it takes a seed value.
 
Random Number CSharp 
 
The Random class provides Random.Next(), Random.NextBytes(), and Random.NextDouble() methods. The Random.Next() method returns a random number, Random.NextBytes() returns an array of bytes filled with random numbers, and Random.NextDouble() returns a random number between 0.0 and 1.0.
 
The Random.Next() method has three overloaded forms and allows you to set the minimum and maximum range of the random number.
 
The following code returns a random number. 
  1. int num = random.Next(); 
The following code returns a random number less than 1000. 
  1. int num = random.Next(1000);  
The following code returns a random number between the min and the max range.
  1. // Instantiate random number generator.  
  2. private readonly Random _random = new Random();  
  3.   
  4. // Generates a random number within a range.      
  5. public int RandomNumber(int min, int max)  
  6. {  
  7.   return _random.Next(min, max);  
  8. }  
You can even combine the two methods - RandomNumber and RandomString to generate a combination of random string and numbers.  
  1. // Generates a random string with a given size.    
  2. public string RandomString(int size, bool lowerCase = false)  
  3. {  
  4.   var builder = new StringBuilder(size);  
  5.   
  6.   // Unicode/ASCII Letters are divided into two blocks
  7.   // (Letters 65–90 / 97–122):
  8.   // The first group containing the uppercase letters and
  9.   // the second group containing the lowercase.  

  10.   // char is a single Unicode character  
  11.   char offset = lowerCase ? 'a' : 'A';  
  12.   const int lettersOffset = 26; // A...Z or a..z: length=26  
  13.   
  14.   for (var i = 0; i < size; i++)  
  15.   {  
  16.    var @char = (char)_random.Next(offset, offset + lettersOffset);  
  17.    builder.Append(@char);  
  18.   }  
  19.   
  20.   return lowerCase ? builder.ToString().ToLower() : builder.ToString();  
  21. }  
The following code generates a password of length 10 with first 4 letters lowercase, next 4 letters numbers, and last 2 letters as uppercase. 
  1. // Generates a random password.  
  2. // 4-LowerCase + 4-Digits + 2-UpperCase  
  3. public string RandomPassword()  
  4. {  
  5.   var passwordBuilder = new StringBuilder();  
  6.   
  7.   // 4-Letters lower case   
  8.   passwordBuilder.Append(RandomString(4, true));  
  9.   
  10.   // 4-Digits between 1000 and 9999  
  11.   passwordBuilder.Append(RandomNumber(1000, 9999));  
  12.   
  13.   // 2-Letters upper case  
  14.   passwordBuilder.Append(RandomString(2));  
  15.   return passwordBuilder.ToString();  
  16. }  
Here is the complete code written in .NET Core 5.0. 
  1. using System;  
  2. using System.Text;  
  3.   
  4. namespace ConsoleApp7  
  5. {  
  6.   class RandomNumberSample  
  7.   {  
  8.     static void Main(string[] args)  
  9.     {  
  10.       var generator = new RandomGenerator();  
  11.       var randomNumber = generator.RandomNumber(5, 100);  
  12.       Console.WriteLine($"Random number between 5 and 100 is {randomNumber}");  
  13.   
  14.       var randomString = generator.RandomString(10);  
  15.       Console.WriteLine($"Random string of 10 chars is {randomString}");  
  16.   
  17.       var randomPassword = generator.RandomPassword();  
  18.       Console.WriteLine($"Random string of 6 chars is {randomPassword}");  
  19.   
  20.       Console.ReadKey();  
  21.     }  
  22.   }  
  23.   
  24.   public class RandomGenerator  
  25.   {  
  26.     // Instantiate random number generator.  
  27.     // It is better to keep a single Random instance 
  28.     // and keep using Next on the same instance.  
  29.     private readonly Random _random = new Random();  
  30.   
  31.     // Generates a random number within a range.      
  32.     public int RandomNumber(int min, int max)  
  33.     {  
  34.       return _random.Next(min, max);  
  35.     }  
  36.   
  37.     // Generates a random string with a given size.    
  38.     public string RandomString(int size, bool lowerCase = false)  
  39.     {  
  40.       var builder = new StringBuilder(size);  
  41.   
  42.       // Unicode/ASCII Letters are divided into two blocks
  43.       // (Letters 65–90 / 97–122):   
  44.       // The first group containing the uppercase letters and
  45.       // the second group containing the lowercase.  

  46.       // char is a single Unicode character  
  47.       char offset = lowerCase ? 'a' : 'A';  
  48.       const int lettersOffset = 26; // A...Z or a..z: length = 26  
  49.   
  50.       for (var i = 0; i < size; i++)  
  51.       {  
  52.         var @char = (char)_random.Next(offset, offset + lettersOffset);  
  53.         builder.Append(@char);  
  54.       }  
  55.   
  56.       return lowerCase ? builder.ToString().ToLower() : builder.ToString();  
  57.     }  
  58.   
  59.     // Generates a random password.  
  60.     // 4-LowerCase + 4-Digits + 2-UpperCase  
  61.     public string RandomPassword()  
  62.     {  
  63.       var passwordBuilder = new StringBuilder();  
  64.   
  65.       // 4-Letters lower case   
  66.       passwordBuilder.Append(RandomString(4, true));  
  67.   
  68.       // 4-Digits between 1000 and 9999  
  69.       passwordBuilder.Append(RandomNumber(1000, 9999));  
  70.   
  71.       // 2-Letters upper case  
  72.       passwordBuilder.Append(RandomString(2));  
  73.       return passwordBuilder.ToString();  
  74.     }  
  75.   }  
  76. }  
The output from above code is shown in figure -1-.
 
random number in C# 
Figure -1- Console Output