Back to Home

How to generate random numbers in C#

In C#, you can generate random numbers using the Random class. For better randomness in .NET 6+, use Random.Shared which is thread-safe and more efficient.

The Next() method generates integers within a specified range. The upper bound is exclusive, meaning Next(1, 7) generates numbers from 1 to 6.

For cryptographically secure random numbers, use RandomNumberGenerator from System.Security.Cryptography.

C# Example Code
using System;

// .NET 6+ recommended approach
int randomNumber = Random.Shared.Next(1, 101);  // 1 to 100
Console.WriteLine($"Random number (1-100): {randomNumber}");

// Generate random number in range
int diceRoll = Random.Shared.Next(1, 7);  // 1 to 6
Console.WriteLine($"Dice roll: {diceRoll}");

// Generate random double (0.0 to 1.0)
double randomDouble = Random.Shared.NextDouble();
Console.WriteLine($"Random double: {randomDouble:F4}");

// Legacy approach (pre-.NET 6)
Random random = new Random();
int legacyRandom = random.Next(1, 11);  // 1 to 10
Console.WriteLine($"Legacy random: {legacyRandom}");

// Generate multiple random numbers
Console.WriteLine("\nFive random numbers:");
for (int i = 0; i < 5; i++)
{
    Console.WriteLine(Random.Shared.Next(1, 101));
}

// Random boolean
bool coinFlip = Random.Shared.Next(2) == 0;
Console.WriteLine($"\nCoin flip: {(coinFlip ? "Heads" : "Tails")}");

Take It Further

The C# Player's Guide book cover

The community's favorite C# guide — teaches every concept you just read about with clarity.

The C# Player's Guide — 5th Edition · RB Whitaker

Get it on Amazon →

As an Amazon Associate I earn from qualifying purchases.