📅  最后修改于: 2023-12-03 14:39:48.229000             🧑  作者: Mango
在编程中,生成随机数是非常常见的需求之一。在 C# 中,我们可以使用 Random 类来生成伪随机数,以满足我们的需求。
以下是 C# 生成随机数的示例代码:
Random random = new Random();
int randomNumber = random.Next();
上述代码将生成一个随机的整数。如果需要生成指定范围内的随机数,可以使用 Next(minValue, maxValue)
方法,例如:
int min = 1;
int max = 100;
int randomNumber = random.Next(min, max);
如上所示,Next()
方法的参数可以指定生成随机数的范围。
在 C# 中,Random()
构造函数默认不带参数,将使用系统时钟作为随机生成种子。如果需要使用自定义的种子,可以使用 Random(seed)
构造函数,例如:
Random random = new Random(123);
int randomNumber = random.Next();
如上所示,我们将使用种子 123
来生成随机数。请注意,使用相同的种子生成的随机数序列是相同的,因此请注意在生产和测试等情况下使用不同的种子。
由于 Random 类的实现并非线程安全的,因此在多线程环境下生成随机数需要特殊处理。以下是一个线程安全的随机数生成器的示例代码:
public static class ThreadSafeRandom
{
private static readonly Random Global = new Random();
[ThreadStatic]
private static Random local;
public static int Next()
{
Random inst = local;
if (inst == null)
{
int seed;
lock (Global) seed = Global.Next();
local = inst = new Random(seed);
}
return inst.Next();
}
}
如上所示,我们使用 ThreadStatic 属性来存储每个线程的 Random 实例,并使用锁定全局 Random 实例的方式来生成种子。
以上是 C# 中生成随机数的示例代码,希望对你有所帮助。需要注意的是,在生成随机数时请遵循安全使用的原则,避免产生不必要的风险。