RandomWalk - 新任务

时间:2013-11-24 19:47:36

标签: java

我又来找你帮忙了。我有这段代码:

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.PrintStream;
import java.io.PrintWriter;
import java.util.HashMap;

public class RandomWalk {

    public static final int NBR_WALKS = 1000;
    public static final int NBR_STEPS = 500;

    public static void main(String[] args) {
        /*PrintStream out;
        try {
            out = new PrintStream(new FileOutputStream("/Volumes/DATA/Desktop/RandomWalkResultater.txt", true));
            System.setOut(out);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }*/
        HashMap<Integer, Integer> totals = new HashMap<>();
        for (int i = -NBR_STEPS; i <= NBR_STEPS; i++) {
            totals.put(i, 0);
        }
        System.out.println("");
        for (int i = 0; i < NBR_WALKS; i++) {
            int total_value = 0;
            for (int j = 0; j < NBR_STEPS; j++) {
                int L = (int) (Math.random() * 2);
                total_value += (L == 0) ? -1 : 1;
            }

            System.out.println("For randomwalk nummer " + i + " var slut punktet " + total_value);
            totals.put(total_value, totals.get(total_value) + 1);
        }
        System.out.println(" ");
        for (int i = -500; i < 500; i++) {

        System.out.println("Du landede på slut punktet "+i+" følgende gange: "+totals.get(i));
        }
        System.out.println(" ");
        System.out.println("Til excel arket:");
        System.out.println("x-værdierne:");
        for (int i = -500; i < 500; i++) {
        System.out.println(i);
        }
        System.out.println("");
        System.out.println("y-værdierne:");
        for (int i = -500; i < 500; i++) {
        System.out.println(totals.get(i));

        }
    }
}

我需要添加一项功能。我想要这个程序输出以下内容(我已经尝试过,我认为我完全不理解它,因为它没有按照我的意愿进行):

平均值。它将进行1000次步行,其中包含500步,因此从理论上讲,它最终可以达到-500或+500。所以要计算我需要说的平均值(让我们称之为a)a =((它降落的地方*落在那个地方的次数)+(它降落的地方+ 1 *落在那个地点的次数+ 1)+ ..)/步数,在这种情况下1000)

实施例: a =(( - 500 * 0)+( - 499 * 0)...(10 * 3)...(500 * 0))/(1000)

你能帮我解决这个问题吗?我试过了一天以上,似乎无法把它包起来:(

0 个答案:

没有答案