私はクラスのこの課題に取り組んでおり、どこが間違っているのか分かります。私は教授の例と同じ入力をしましたが、私は別の出力を持っています。入力1,2,3,4,5,5,6,6,7,8,9,10の平均値は5.61であり、標準偏差は2.99794373974304である。私は正しい5.6163を得ていますが、標準偏差は2.9963144027287916です。どこが間違っているのか分かりません。何か案は?私のためにこれをする誰かを探していない。私はどこに間違っているのか知る必要があります。平均、標準偏差
public static void main(String[] args) {
//
Scanner input = new Scanner(System.in);
//User Input 1-10
System.out.print("Enter a number: ");
double inputA = input.nextDouble();
System.out.print("Enter a number: ");
double inputB = input.nextDouble();
System.out.print("Enter a number: ");
double inputC = input.nextDouble();
System.out.print("Enter a number: ");
double inputD = input.nextDouble();
System.out.print("Enter a number: ");
double inputE = input.nextDouble();
System.out.print("Enter a number: ");
double inputF = input.nextDouble();
System.out.print("Enter a number: ");
double inputG = input.nextDouble();
System.out.print("Enter a number: ");
double inputH = input.nextDouble();
System.out.print("Enter a number: ");
double inputI = input.nextDouble();
System.out.print("Enter a number: ");
double inputJ = input.nextDouble();
//Formula for Mean
double mean = (inputA + inputB + inputC + inputD + inputE + inputF + inputG + inputH + inputI + inputJ)/10;
//Formula for standard deviation
//Subtract each input by the mean
double m1 = (inputA - mean);
double m2 = (inputB - mean);
double m3 = (inputC - mean);
double m4 = (inputD - mean);
double m5 = (inputE - mean);
double m6 = (inputF - mean);
double m7 = (inputG - mean);
double m8 = (inputH - mean);
double m9 = (inputI - mean);
double m10 = (inputJ - mean);
//Square each m variable
double v1 = (Math.pow(m1, 2));
double v2 = (Math.pow(m2, 2));
double v3 = (Math.pow(m3, 2));
double v4 = (Math.pow(m4, 2));
double v5 = (Math.pow(m5, 2));
double v6 = (Math.pow(m6, 2));
double v7 = (Math.pow(m7, 2));
double v8 = (Math.pow(m8, 2));
double v9 = (Math.pow(m9, 2));
double v10 = (Math.pow(m10, 2));
//Add all the sums squared sums together
double var = (v1 + v2 + v3 + v4 + v5 + v6 + v7 + v8 + v9 + v10);
//divide by the number of variables to get Variance
double var1 = (var/10);
double var2 = (var % 10);
double var3 = (var1 + var2);
//Standard deviation is the square root of the Variance
double dev = (Math.sqrt(var3));
//Mean and Deviation print
System.out.println("The mean is " + mean);
System.out.println("the deviation is: " + dev);
}
私のコーディングを改訂しました。しかし、私はまだオフです。誰も私がより正確な答えを得るのを助けることができますか?私はまだ困った!
public static void main(String[] args) {
double[] arrayM = new double[10];
double[] arrayV = new double[10];
double sum = 0;
for (int index = 0; index < arrayM.length ; index ++) {
System.out.print("Enter a number: ");
Scanner input = new Scanner(System.in);
double in = input.nextDouble();
arrayM[index] = in;
sum += in;
}
//final mean and variant
double mean = sum/arrayM.length;
double vari = 0;
for (int index = 0; index < arrayM.length ; index ++) {
double var=((index+1)-mean)^2;
arrayV[index] = var;
vari += var;
}
double variant = vari/arrayM.length;
//final deviation
double devi= Math.sqrt(variant);
System.out.print("The mean is: "+mean);
System.out.print("The standard deviation is: "+devi);
}
}
ので、((インデックス+ 1)-mean)^ 2が動作しませんダブルVAR =内を意味すると言うところ。どうすればいいのですか?
最終編集:私はそれを理解しました。ここに最終コードがあります。
public class TESTPROJECT {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
//Arrays
Scanner input = new Scanner(System.in);
double[] arrayM = new double[10];
double[] arrayV = new double[10];
//Sum
double sum = 0;
//Sum array
for (int index = 0; index < arrayM.length ; index ++) {
System.out.print("Enter a number: ");
double in = input.nextDouble();
arrayM[index] = (in);
sum += in;
}
//Mean
double mean = sum/arrayM.length;
for (int index = 0; index < arrayM.length ; index ++) {
double var = arrayM[index] - mean;
arrayV[index] = var;
}
//Variant Loop
double sqre = 0;
for(int index = 0; index < arrayV.length; index++) {
double sqr = Math.pow(arrayV[index],2);
sqre += sqr;
}
//Deviation cal
double variant = sqre/arrayM.length;
//final deviation
double devi= Math.sqrt(variant);
//ouput
System.out.println("The mean is: "+mean);
System.out.println("The standard deviation is: "+devi);
}
}
あなたはループについて聞いたことがありますか? –
Math.pow(x、2)は使用しないでください。代わりにx * xを使用してください – FredK
あなたは実際に分散の定義を知っていますか? – FredK