为了确保不同的随机数,您应该只使用Random
类的一个实例,如答案here,here和here中的建议。C#在使用库时生成随机数,使用内部随机实例
在我的库中,我需要随机数,所以我创建了一个类Randomizer
,它提供了一些方法,它使用单个Random
实例返回随机数。下面是Randomizer
代码的片段:
class Randomizer
{
private Randomizer() { }
public static Randomizer Instance { get; } = new Randomizer();
private static readonly Random random = new Random();
private static readonly object syncLock = new object();
public int Next(int minValue, int maxValue)
{
lock(syncLock)
{
return random.Next(minValue, maxValue);
}
}
// rest of code
}
现在,如果我的媒体库的用户还需要什么样的随机数?我是否应该将我的Randomizer
类公开并在库的文档中指定,该用户应该使用我的Randomizer
类来生成随机数字?
你至少应该提供一个构造函数,一个'Random'实例 –
什么将随机数被用于? – Jonathan
如果我提供了一个采用“Random”实例的构造函数,我将不得不在库的其他位置创建一个Random实例。那么我应该创建一个公用的(出库)属性或方法,它返回这个实例吗?或者,在使用任何其他库类之前,库的用户应该创建“Random”实例并将其传递给“Randomizer”构造器**? @Matt我知道它,但在'Random.Next(int,int)'方法中,第二个参数也被称为maxValue @Jonathan我将使用它们来检查,如果随机数小于某些指定的值。 – Darko