Вот некоторые простой код, чтобы показать мою проблему:количество Генерирование зависит от 2-х списков
void method()
{
for(int i = 0;i<=99)
{
method1();
method2();
}
}
void method1()
{
if(Randombool())
{
bool exists = true;
int n;
while(exists)
{
n=RandNum(100);
exists = list1.Exists(num => num == n);
}
list1.add(n);
}
}
void method2()
{
int n;
bool exists = true;
bool exists2 = true;
while(!(exists && !exists2))
{
n = RandNum(100);
exists = list1.Exists(elem => elem == n);
exists2 = list2.Exists(elem => elem == n);
}
list2.add(n)
}
Ну это очевидно, что это будет застрял в while
петле из method2 в течение длительного времени.
Есть ли более нежный метод генерации чисел, поэтому я могу избежать ожидания?
Является ли это мне, или делает ваш код только петлю в 100 раз, и вы ищете 200 уникальных номеров и ваш RandNum генерирует только от 0 до 100. Этот код не работа. У вас есть некоторые логические ошибки. Если бы это сработало, я бы посоветовал использовать хэш-таблицу (http://msdn.microsoft.com/en-us/library/system.collections.hashtable.aspx) для хранения номеров, и поиск будет быстрым. – CrazyDart
Я думаю, что ваша логика ошибочна. – whd
Хммм, тролль? Ваш код даже не действителен C#. – CrazyDart