我正在尝试使用mountainRange [0]的值来计算mountainRange [1]的值,然后使用[1]的值来计算[2],依此类推。
public static double[] generateMountains(int size, double steepness, double maxHeight)
{
double [] mountainRange = new double[size];
mountainRange[0] = maxHeight/2;
for (int i = 1; i < mountainRange.length; i++)
{
mountainRange[i] = getNextPoint(mountainRange [i], steepness, maxHeight);
System.out.println("point is: " + mountainRange[i]);
}
所以问题是mountainRange [i]总是等于main方法(10)中给出的第一个值。我试过了:
for (int i = 1; i < mountainRange.length; i++)
{
mountainRange[i] = getNextPoint(mountainRange [i-1], steepness, maxHeight);
但是我得到了相同的结果,唯一的区别是该值现在会随机变化。从10.0到9.97 ......或6.78 ......,或者有时它将一直保持在10。
另外,getNextPoint方法
public static double getNextPoint (double height, double steepness, double maxHeight)
{
steepness = steepness - (Math.random() * steepness);
height = height + steepness;
return height;
我打印的陡度并没有改变主方法中的设置。它应该做的是:如果给出陡度3.0,实际陡度将是-3.0和3.0之间的随机数。
另外,我尝试在for循环之前移动generateMountains中的getNextPoint方法。但是,陡度并没有改变。