How to assign a random number using a cryptographically secure random number generator in C#

1 Answer

0 votes
using System;
using System.Security.Cryptography; // RandomNumberGenerator

class Program
{
    static void Main()
    {
        // Random range
        int minValue = 1;
        int maxValue = 100;

        // Generate a cryptographically secure random number
        int randomNumber = GetSecureRandomNumber(minValue, maxValue);
        Console.WriteLine($"Random Number: {randomNumber}");
    }

    static int GetSecureRandomNumber(int minValue, int maxValue)
    {
        if (minValue >= maxValue)
            throw new ArgumentOutOfRangeException(nameof(minValue), "minValue must be less than maxValue.");

        byte[] randomBytes = new byte[4];
        using (RandomNumberGenerator rng = RandomNumberGenerator.Create()) {
            rng.GetBytes(randomBytes);
        }

        // Convert bytes to a positive integer
        int randomInt = Math.Abs(BitConverter.ToInt32(randomBytes, 0));

        // Scale the random number to the desired range
        return minValue + (randomInt % (maxValue - minValue));
    }
}



/*
run:

The secure random number is: 14

*/

 



answered Aug 20, 2025 by avibootz
...