我有這種方法來生成新的數值,但它需要很長時間才能完成該功能。 如何快速生成隨機數?如何生成給定數值數組中不存在的數值?
public int GeneratenewID(int[] OptionId)
{
Random ran = new Random();
int SearchId = ran.Next(1, OptionId.Length*2);
if (!OptionId.Contains(SearchId))
{
return SearchId;
}
else
{
return GeneratenewID(OptionId);
}
}
這是幾乎可以肯定是一個破碎的洗牌算法。 Google「c#fisher yates shuffle」。 –
退一步說明**爲什麼**你認爲你需要這個。這味道像一個XY問題 - https://meta.stackexchange.com/questions/66377/what-is-the-xy-problem。 – mjwills
將'Random ran = new Random();'從函數中取出,併爲隨機實例使用一個類字段。隨機空構造函數使用系統時間作爲種子需要很長時間,而在遞歸方法中,它會在系統時間改變之前運行幾次,所以它會一遍又一遍地產生相同的數字。 –