私はこの新しい数値を生成する方法を持っていますが、機能を完了するのに時間がかかります。 速いapprochで乱数を生成するには?与えられた数値配列に存在しない数値を生成する方法は?
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();'を取り出し、ランダムインスタンスにクラスフィールドを使います。ランダムな空のコンストラクタがシードとしてシステム時間を使用し、システム時間が変更される前に再帰メソッドで数回実行されるので、それは長い時間がかかります。同じ番号を何度も何度も繰り返すことになります。 –