我又来找你帮忙了。我有这段代码:
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)
你能帮我解决这个问题吗?我试过了一天以上,似乎无法把它包起来:(