Random object not disposing in C#

Я работаю над алгоритмом генерации гладкого рельефа на C# и использую XNA для отображения данных.

Я делаю так, чтобы он создавал новую точку на полпути между каждой точкой за итерацию, на случайной высоте между ними. Это работает нормально, и я настроил его так, что на второй итерации он выбирает случайную точку, как на слайде 2, а не пытается создать новую точку между точками, которые находятся на одной оси.

Происходит то, что цикл использует то же самое случайное значение из предыдущей итерации: http://i.stack.imgur.com/UmWr7.png

Очевидно, что это не идеально, так как это не правильная генерация случайных чисел.

Если я использую Thread.Sleep(20) после генерации каждой точки, то все работает правильно: http://i.stack.imgur.com/KziOg.png

Я не хочу использовать обходной путь Sleep, если это возможно, так как он очень медленный, а я хотел бы использовать его в реальном времени. Я уверен, что это как-то связано со сборщиком мусора в C#.

Вот мой код Get Point

Random r = new Random();
int x = (p1.X + p2.X) / 2;
int y;
if (!initial)
       y = r.Next(Math.Min(p1.Y, p2.Y), Math.Max(p1.Y, p2.Y));
else
       y = r.Next(Math.Min(p1.Y, p2.Y) - Game1.screenHeight / 2, Math.Max(p1.Y, p2.Y) + Game1.screenHeight / 2);
return new Point(x, y);

Является ли сборщик мусора частью проблемы?

Есть ли предложения или решения по решению этой проблемы?

6
задан p.campbell 29 October 2011 в 22:26
поделиться