C# Random class provides functionality to generate random numbers in C#. The Random class can also generate other data types including strings. In this code example, learn how to create a random number in C#.
Random class constructors have two overloaded forms. It takes either no value or it takes a seed value. 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.
The following code returns a random number less than 1000.
- int num = random.Next(1000);
The following code returns a random number between the min and the max range.
-
- private readonly Random _random = new Random();
-
-
- public int RandomNumber(int min, int max)
- {
- return _random.Next(min, max);
- }
You can even combine the two methods -
RandomNumber and
RandomString to generate a combination of random string and numbers.
-
- public string RandomString(int size, bool lowerCase = false)
- {
- var builder = new StringBuilder(size);
-
-
-
-
-
- char offset = lowerCase ? 'a' : 'A';
- const int lettersOffset = 26;
-
- for (var i = 0; i < size; i++)
- {
- var @char = (char)_random.Next(offset, offset + lettersOffset);
- builder.Append(@char);
- }
-
- return lowerCase ? builder.ToString().ToLower() : builder.ToString();
- }
The following code generates a password of length 10 with first 4 letters lowercase, next 4 letters numbers, and last 2 letters as uppercase.
-
-
- public string RandomPassword()
- {
- var passwordBuilder = new StringBuilder();
-
-
- passwordBuilder.Append(RandomString(4, true));
-
-
- passwordBuilder.Append(RandomNumber(1000, 9999));
-
-
- passwordBuilder.Append(RandomString(2));
- return passwordBuilder.ToString();
- }
Here is the complete code written in .NET Core 5.0.
- using System;
- using System.Text;
-
- namespace ConsoleApp7
- {
- class RandomNumberSample
- {
- static void Main(string[] args)
- {
- var generator = new RandomGenerator();
- var randomNumber = generator.RandomNumber(5, 100);
- Console.WriteLine($"Random number between 5 and 100 is {randomNumber}");
-
- var randomString = generator.RandomString(10);
- Console.WriteLine($"Random string of 10 chars is {randomString}");
-
- var randomPassword = generator.RandomPassword();
- Console.WriteLine($"Random string of 6 chars is {randomPassword}");
-
- Console.ReadKey();
- }
- }
-
- public class RandomGenerator
- {
-
-
-
- private readonly Random _random = new Random();
-
-
- public int RandomNumber(int min, int max)
- {
- return _random.Next(min, max);
- }
-
-
- public string RandomString(int size, bool lowerCase = false)
- {
- var builder = new StringBuilder(size);
-
-
-
-
-
-
- char offset = lowerCase ? 'a' : 'A';
- const int lettersOffset = 26;
-
- for (var i = 0; i < size; i++)
- {
- var @char = (char)_random.Next(offset, offset + lettersOffset);
- builder.Append(@char);
- }
-
- return lowerCase ? builder.ToString().ToLower() : builder.ToString();
- }
-
-
-
- public string RandomPassword()
- {
- var passwordBuilder = new StringBuilder();
-
-
- passwordBuilder.Append(RandomString(4, true));
-
-
- passwordBuilder.Append(RandomNumber(1000, 9999));
-
-
- passwordBuilder.Append(RandomString(2));
- return passwordBuilder.ToString();
- }
- }
- }
The output from above code is shown in figure -1-.
Figure -1- Console Output