C#:
生成随机数
如何操作:
生成 C# 中随机数最常见的方法是使用 System.Random
类。这里有一个简单的示例演示了它的用法:
using System;
public class RandomNumberExample
{
static void Main(string[] args)
{
Random random = new Random();
int randomNumber = random.Next(1, 100); // 生成一个 1 到 99 之间的数字
Console.WriteLine($"随机数: {randomNumber}");
}
}
这将输出一个随机数,例如:
随机数: 42
要生成一个 0.0 到 1.0 之间的随机浮点数,你可以使用 NextDouble
方法:
double randomDouble = random.NextDouble();
Console.WriteLine($"随机双精度: {randomDouble}");
如果你正在研发一个对安全性要求高的应用程序,需要加密级的随机性,最好使用 System.Security.Cryptography
中的 RNGCryptoServiceProvider
类:
using System;
using System.Security.Cryptography;
public class SecureRandomExample
{
static void Main()
{
byte[] randomNumber = new byte[4]; // 创建一个 4 字节长的随机数
using (RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider())
{
rng.GetBytes(randomNumber);
}
int value = BitConverter.ToInt32(randomNumber, 0);
Console.WriteLine($"加密级安全随机数: {value}");
}
}
深入探索
多年来,C# 中的随机数生成已经发展。最初,System.Random
类是生成伪随机数的首选。之所以称之为伪随机,是因为给定一个特定的种子值,它将产生相同的数字序列,这对于调试或测试的可重复性是有用的。
虽然对于基本需求来说足够了,System.Random
不是线程安全的,并且能产生可预测的结果,这对于依赖安全的应用程序来说是不适合的。这种限制导致了引入 RNGCryptoServiceProvider
以获得加密级的随机性,这更安全但也更消耗资源。
在 .NET Core 和 .NET 5+ 中的另一个选择是 System.Security.Cryptography
中的 RandomNumberGenerator
类,用于安全地生成随机数,旨在提供一个比 RNGCryptoServiceProvider
更现代化且易于使用的选项。
C# 中生成随机数的每种方法都有其适用的场合,取决于应用程序的要求。对于大多数应用程序,System.Random
就足够了,但对于那些需要安全、不可预测的随机数的应用程序,加密类提供了一个强大的替代方案。