配列を介して100個のランダム要素を作成する次のプログラムがあります。これらの 100 個のランダム値は一意であり、すべての値は 1 回だけ表示されます。
ただし、線形検索では配列全体を検索し続けます。どうすればジャグ配列をこれに入れることができるので、残りの場所だけを「スキャン」しますか? (テーブルを 100 個の最大要素で保持すると仮定すると、1 つのランダムな値が生成された場合、配列は線形検索スキャンで 99 個の要素を保持します...)
FoundLinearInArray のどこかにギザギザの配列を実装する必要があると思いますか?
うまくいけば、これは何らかの意味を成しました。よろしく。
private int ValidNumber(int[] T, int X, int Range)
{
Random RndInt = new Random();
do
{
X = RndInt.Next(1, Range + 1);
} while (FoundLinearInArray(T, X));
return X;
}/*ValidNumber*/
private bool FoundLinearInArray(int[] A, int X)
{
byte I = 0;
while ((I < A.Length) && (A[I] != X))
{
I++;
}
return (I < A.Length);
}/*FoundInArray*/
public void FillArray(int[] T, int Range)
{
for (byte I = 0; I < T.Length; I++)
{
T[I] = ValidNumber(T, I, Range);
}
}/*FillArray*/