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
*/