Java嵌套循环问题

时间:2016-03-01 01:25:32

标签: java

所以我一直在研究这段代码,我已经陷入停滞状态了。这是一个针对学校的项目,它分为两个部分,第一部分根本没有问题。

  一个酒鬼开始漫无目的地走路,从一个灯柱开始。在每个时间步,醉汉忘记了他或她的位置,并且随机地向北,向东,向南或向西迈出一步,概率为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);
  }
}

我已经被困在这里很长一段时间了,代码编译并运行但似乎所有它给我的是一个单一的试验值,而不是所需的平均值。非常感谢任何帮助,非常感谢。 (对于不正确的格式化也很抱歉,我是新来的并且尽我所能。)

0 个答案:

没有答案