在C#中,生成随机数的高效方法是使用System.Random
类或者System.Security.Cryptography.RNGCryptoServiceProvider
类
System.Random
类:using System;
class Program
{
static void Main()
{
// 创建一个Random实例
Random random = new Random();
// 生成一个0到99之间的随机整数
int randomNumber = random.Next(100);
Console.WriteLine("随机数: " + randomNumber);
}
}
System.Security.Cryptography.RNGCryptoServiceProvider
类:using System;
using System.Security.Cryptography;
class Program
{
static void Main()
{
// 创建一个RNGCryptoServiceProvider实例
RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider();
// 生成一个0到99之间的随机整数
int randomNumber = GetRandomInt(rng, 100);
Console.WriteLine("随机数: " + randomNumber);
}
static int GetRandomInt(RNGCryptoServiceProvider rng, int maxValue)
{
if (maxValue <= 0) throw new ArgumentOutOfRangeException(nameof(maxValue));
int result;
byte[] randomBytes = new byte[4];
do
{
rng.GetBytes(randomBytes);
result = BitConverter.ToInt32(randomBytes, 0) & Int32.MaxValue;
} while (result >= maxValue * (Int32.MaxValue / maxValue));
return result % maxValue;
}
}
注意:RNGCryptoServiceProvider
类生成的随机数比System.Random
类更加安全,但可能会稍微慢一些。如果你需要生成大量的随机数,可以考虑使用RNGCryptoServiceProvider
类。