爲了確保不同的隨機數,您應該只使用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