Я пытаюсь написать случайную функцию, которая возвращает случайное число, которое отличается от последних пяти последних чисел, которые оно вернуло.Как создать случайную функцию, которая каждый раз возвращает другое значение?
очень Двойники код, который я использую в Excel VBA:
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
Число также необходимо проверить, что слово в СЭП [я] .Known ложно. Я попытался это один:
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;
}
Тем не менее, кажется, doesen't сотрудничать слишком хорошо ... она возвращает 0 каждый раз.
Min и Max является диапазон в списке он randomises из (должно быть в пределах 1 -30) евр является количество элементов в списке (около 500 - 1000 наименований) инициализирую oldNum с:
int[] oldNum = new int[3];
что случилось с классом Random()? –
Что вы делаете, чего не ожидали? – BrokenGlass
Ehm, если каждый номер должен отличаться от предыдущих пяти, это не так произвольно, как должно быть! Во всяком случае, ваш пример заражает случайным образом каждый раз, когда вам нужно новое случайное число, и это плохо работает. Сделайте статичность «rnd» и вызовите функцию «Случайный» только один раз. –