所以我一直在研究这段代码,我已经陷入停滞状态了。这是一个针对学校的项目,它分为两个部分,第一部分根本没有问题。
一个酒鬼开始漫无目的地走路,从一个灯柱开始。在每个时间步,醉汉忘记了他或她的位置,并且随机地向北,向东,向南或向西迈出一步,概率为25%。 N步之后酒鬼会离灯柱多远?编写一个程序RandomWalker.java,它接受一个整数命令行参数N并模拟N步的随机游走运动。在每个步骤之后,打印随机游走的位置,将灯柱视为原点(0,0)。另外,打印距离原点最终距离的正方形。
我对这部分问题的代码是:
import java.util. *;
import java.math. *;
public class RandomWalker {
public static void main(String args[]){
int N = Integer.parseInt(args[0]);
Random rand = new Random();
int x = 0;
int y = 0;
int XorY;
int dist;
int count =0;
while(count<N){
XorY = rand.nextInt(2);
dist = rand.nextInt(2);
if(XorY==0){
if(dist==0)
dist = -1;
x += dist;
System.out.println("("+x+", " +y+")");
}
else{
if(dist==0)
dist = -1;
y += dist;
System.out.println("("+x+", " +y+")");
}
count ++;
}
System.out.println("Squared Distance = " + (x*x + y*y));
}
}
问题的第二部分 -
编写一个程序RandomWalkers.java,它接受两个命令行参数N和T.在每个T独立实验中,模拟N步的随机游走并计算平方距离。输出均方距离(T平方距离的平均值。)
% java RandomWalkers 100 10000
squared distance = 101.446
% java RandomWalkers 100 10000
mean squared distance = 99.1674
% java RandomWalkers 200 1000
mean squared distance = 195.75
我提出的代码是 -
import java.util.*;
import java.math.*;
public class RandomWalkers {
public static void main(String args[]) {
Random rand = new Random();
int N = Integer.parseInt(args[0]);
int T = Integer.parseInt(args[1]);
double avgDist =0;
int stepCount =0;
int trialCount =0;
int x = 0;
int y = 0;
int XorY;
int dist;
while(trialCount<T){
while(stepCount<N){
XorY = rand.nextInt(2);
dist = rand.nextInt(2);
if(XorY==0){
if(dist==0)
dist = -1;
x += dist;
}
else{
if(dist==0)
dist = -1;
y += dist;
}
stepCount ++;
}
avgDist += ((x*x) + (y*y));
trialCount++;
}
System.out.println("Mean Squared Distance = " + avgDist/(double)trialCount);
}
}
我已经被困在这里很长一段时间了,代码编译并运行但似乎所有它给我的是一个单一的试验值,而不是所需的平均值。非常感谢任何帮助,非常感谢。 (对于不正确的格式化也很抱歉,我是新来的并且尽我所能。)