返された最後の5つの異なる数値とは異なる乱数を返すRandom関数を作成しようとしています。
私がExcelVBAで使用する非常に類似したコード:
Function Rand(ByVal Low As Long, ByVal High As Long) As Long
Randomize
Num3 = Num2
Num2 = Num1
Rand = Int((High - Low + 1) * Rnd) + Low
Num1 = Rand
Do While Num1 = Num2 Or Num1 = Num3 Or Sheets(Csheet).Cells(Num1, 3) > 20
Rand = Int((High - Low + 1) * Rnd) + Low
Num1 = Rand
Loop
End Function
番号は、heb[i].Knownの単語がfalseであることも確認する必要があります。私はこれを試しました:
private int Rand(int Min, int Max)
{
int i;
int x = 0;
Random rnd = new Random();
oldNum[3] = oldNum[2];
oldNum[2] = oldNum[1];
oldNum[1] = oldNum[0];
do
{
i = rnd.Next(Min, Max);
x++;
}
while (Heb[i].Known==false && x<10000 && oldNum.Contains(i));
oldNum[0] = i;
return i;
}
それにもかかわらず、それはあまりうまく協力していないようです...それは毎回0を返します。
最小値と最大値は、ランダム化するリスト内の範囲です(1〜30の間である必要があります)。Hebは、リスト内のアイテム数(約500〜1000アイテム)です。oldNumを次のように初期化します。
int[] oldNum = new int[3];