Я не вижу достаточно вашего кода, но это должно помочь, если я правильно угадаю о том, как код структурирован ... это должно прояснить, почему числа одинаковы или близки к нему, потому что я имелпохожая проблема, и вот как я решил ее, и почему я думаю, что это было решением.
У меня был некоторый код, который генерировал случайные числа, которые выглядели так (значительно упрощенно)
for (some loop logic)
{
Random r = new Random();
int myRandomNumber = Random.Next()
}
Когда этовыполнив его, он фактически создал те же самые числа для части цикла (скажем, 8 итераций), затем переключился на новый номер, повторенный для 9 итераций и т. д. Я решил его, изменив его так, чтобы он выглядел следующим образом:
Random r = new Random();
for (some loop logic)
{
int myRandomNumber = Random.Next()
}
Я уверен, что другие скажут это лучше, но, объявив Random вне цикла, экземпляр класса Random смог отследить последнее сгенерированное случайное число и убедиться, что следующее действительно было случайным.Имея это в цикле (как в первом примере), каждая итерация создавала новый объект Random, поэтому она просто использовала любую логику (я полагаю, основанную на времени), чтобы сгенерировать случайное число, не зная, что другой экземпляр только что сгенерировал то же самоечисло.
Мальчик, я надеюсь, что это имело смысл ... Уже поздно, и я не объясняю четко, но я думаю, что ваша проблема может быть в том, что вы создаете новый экземпляр случайного классав вашей логике цикла, и вам нужно объявить ее вне цикла.
Изменить - добавлено
В этой статье рассматривается, почему это так:
http://geekswithblogs.net/kakaiya/archive/2005/11/27/61273.aspx