2013-10-26 120 views
-1

我爲我的課程分配了這樣的內容:編寫一個名爲Stats的類。構造函數不會輸入任何內容。將會有一個addData(double a)方法用於從測試程序中添加一個值。方法getCount(),getAverage()和getStandardDeviation()將返回適當的值作爲雙精度值。計算作業中的標準偏差

這是我到目前爲止有:

public class Stats 
{ 
public Stats (double a) 
{ 

a=0.0 
} 

    public void addData(double a) 
    { 
    while (
    sum=sum+a; 
    sumsq=sumsq+Math.pow(a,2) 
    count=count+1 
    } 

    public double getCount() 
    { 

    return count; 
    } 

    public double getAverage() 
    { 

    average=sum/count 
    return average; 
    } 

    public double getStandardDeviation() 
    { 


private double sum=o; 
private double count=0; 
private double sumsq=0; 

我的問題是搞清楚如何使用我定義的變量來計算標準偏差。

謝謝你們!

+0

#1是不適合這樣的問題。如果您在任務中遇到任何問題,請與您的老師談談 –

回答

0

你不能用你定義的變量來做到這一點。你需要保持原有的數據能夠計算公式

sigma = Math.sqrt(sum(Math.pow(x-mean, 2))/count) 

所以,

(1)創建專用數組或列表在其中,你會在addData添加你的價值觀。這就是你需要在addData中完成的一切。

(2)getCount將=長度列表的

(3)getAverage =在列表中的值的總和/ getCount將()

(4)getStandardDeviation是一樣的東西

double avg = getAverage(); 
double cnt = getCount(); 
double sumsq = 0; 
for (int i = 0; i < values.Count(); i++) { 
    sumsq += Math.pow(values[i] - avg, 2); 
} 
stdev = Math.sqrt(sumsq/cnt);