背景:方法名称是computeStatsMean()。它取初始值 100,并通过从正态分布中随机抽样平均每周利润来添加每周利润。它需要计算 100 的值在 3582 周内会变成多少。我必须对这种方法进行 1000 次试验,以了解正态分布的每周平均利润值的不同值如何使我们获得不同的利润值。我必须将 1000 股股票收益(利润值或“新值”)存储在 ArrayList 中,并从中获取最大值、最小值、中位数。
问题:我能够运行方法并进行采样等等。但是我无法运行它进行 1000 次试验。我尝试在 main 中调用该方法 1000 次(1000 次 for 循环),但它用 ArrayList 中的新值替换了旧值。
代码:
class Sample extends SimulateMarket{
public ArrayList<Double> data = new ArrayList<Double>();
public ArrayList<Double> myData = new ArrayList<Double>();
private double mean, stdDev;
private Random random;
private SimulateMarket mySim = new SimulateMarket(); //mySim is an instance of SimulateMarket class used to access variables of Simulate Class
//Constructor
public Sample(){ //Constructor used for the Distributional Technique
random = new Random();
int size = 3582;
for(int i=0; i<size ; i++)
data.add(0.0016+random.nextGaussian()*0.0205); //Random sampling from Normal Distribution
System.out.println(this); //for printing the results
}
//Getters (Mean, Standard Deviation, Median)
public double getMean(){
double sum=0;
for(int i=0; i<mySim.WEEK; i++)
sum += data.get(i);
return sum/data.size();
}
public void computeStatsMean(){
double equity = 100;
for(int i=0; i<100; i++){
equity = equity*(1+getMean());
}
myData.add(equity);
System.out.println("mean : " + getMean());
for(Double num: myData){
System.out.println("with mean:" + num);
}
}
class SimulateMarket{
public static void main(String[] args){
for(int i=0; i<1000; i++){
Sample equity = new Sample();
equity.computeStatsMean();
}
}
}
呼如林
阿波罗的战车
相关分类