所以我们有一部分任务分为两部分。以下是该部分所说的内容。初学者在这里,我有嵌套while循环问题
酒鬼开始漫无目的地从灯柱开始行走。在每一个时间步,酒鬼都会忘记他或她在哪里,并随机一步,无论是北部,东部,南部还是西部,概率为25%。 N级后,酒鬼离开灯柱多远?
编写一个程序RandomWalker.java,它接受一个整数的命令行参数N并模拟一个随机游走步骤的运动。在每个步骤之后,打印随机漫步者的位置,将灯柱 作为原点(0,0)。此外,打印距离原点的最终距离的平方。
该程序正常工作,这是我的代码。
package project2;
import java.util.*;
import java.math.*;
public class RandomWalker {
public static void main(String args[]){
Scanner scan = new Scanner(System.in);
Random rand = new Random();
System.out.println("Enter the number of steps you want to take please.");
int steps = scan.nextInt();
int x = 0;
int y = 0;
int XorY;
int dist;
int count =0;
while(count<steps){
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万
平方距离= 101.446%的java RandomWalkers 100万
均方距离= 99.1674%java RandomWalkers 200 1000
均方距= 195.75
我以为我可以只在外面做一个嵌套的while循环,同时计算内部的试验次数,而与上面完全一样。但它只是回复第一次尝试的距离,而不是所有的平均值。我已经搞了两天,现在看起来如此。任何和所有的帮助表示赞赏。
package project2;
import java.util.*;
import java.math.*;
public class RandomWalkers {
public static void main(String args[]) {
Scanner scan = new Scanner(System.in);
Random rand = new Random();
System.out.println("Enter the number of steps you want to take please.");
int steps = scan.nextInt();
System.out.println("Enter the amount of trials you want run please");
int trials = scan.nextInt();
double avgDist =0;
int stepCount =0;
int trialCount =0;
int x = 0;
int y = 0;
int XorY;
int dist;
while(trialCount<trials){
while(stepCount<steps){
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("Average Squared Distancee = " +avgDist/(double)trialCount);
}
}
我会认为'RandomWalkers'会有一个'RandomWalker'数组。你知道,代码重用和名称中的传达?看起来像很多或复制意大利面... –
太糟糕了,你没有写下你的第一个例子作为一种方法。那么第二项任务就太简单了..... – Ingo