【发布时间】:2011-10-29 22:19:49
【问题描述】:
我正在研究 C# 中的平滑地形生成算法,并使用 XNA 显示数据。
我正在制作它,因此它在每次迭代的每个点之间的中间创建一个新点,在两者之间的随机高度。这工作正常,我已经设置它,以便在第二次迭代时它选择一个随机点,就像在幻灯片 2 中一样,而不是尝试在同一轴上的点之间创建一个新点。
发生的情况是循环使用与上一次迭代相同的随机值:http://i.stack.imgur.com/UmWr7.png
这显然不理想,因为它不是适当的随机生成。
如果我在每个点生成后使用Thread.Sleep(20),它可以正常工作:http://i.stack.imgur.com/KziOg.png
如果可能,我不想使用Sleep 解决方法,因为它非常慢,我想实时使用它。我很确定这与 C# 垃圾收集器有关。
这是我的获取点代码
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);
垃圾回收是问题的一部分吗?
有解决这个问题的建议或解决方案吗?
【问题讨论】: