Java 阵列列表的标准偏差

Java 阵列列表的标准偏差,java,arraylist,Java,Arraylist,这段代码应该在ArrayList中查找随机整数的最大值。然而,我的标准偏差代码并没有显示正确的结果。它显示了另一个预期的数字 我做错了什么 import java.io.*; import java.util.*; public class Assignment4 { public static void main(String[] args) { ArrayList<Integer> values = new ArrayList<Intege

这段代码应该在
ArrayList
中查找随机整数的最大值。然而,我的标准偏差代码并没有显示正确的结果。它显示了另一个预期的数字

我做错了什么

import java.io.*;
import java.util.*;

public class Assignment4 {
    public static void main(String[] args)
    {
        ArrayList<Integer> values = new ArrayList<Integer>();
        int count = 0;
        int total = 0;
        Random r = new Random();

        for (int i = 1; i <= 10; i++) {
            values.add(r.nextInt(90)+ 1);

            System.out.println(values);

        }

        System.out.println(mean(values));
        System.out.println(sd(values));
    }

    public static double mean (ArrayList<Integer> table)
    {
        int total = 0;

        for ( int i= 0;i < table.size(); i++)
        {
            int currentNum = table.get(i);
            total+= currentNum;
        }
        return total/table.size();
    }

    public static double sd (ArrayList<Integer> table)
    {
        double mean= mean(table);
        double temp =0;
        for ( int i= 0; i <table.size(); i++)
        {
            temp= Math.pow(i-mean, 2);
        }

        return Math.sqrt(mean( table));
    }

    public static void selectionSort(ArrayList<Integer> table)
    {
        int count = table.size();
        for(int pos = 0; pos < count - 1; pos++)
        {
            int locMin = pos;
            for(int i = pos + 1; i < count; i++)
            {
                if(table.get(i) < table.get(locMin))
                    locMin = i;
            }

            int temp = table.get(pos);
            table.set(pos, table.get(locMin) );
            table.set(locMin, temp);
        }
    }
}
import java.io.*;
导入java.util.*;
公共课堂作业4{
公共静态void main(字符串[]args)
{
ArrayList值=新的ArrayList();
整数计数=0;
int-total=0;
随机r=新随机();

对于(int i=1;i,这里有一个标准偏差程序示例:

// Beginning of class Deviation

public class Deviation
{

// Beginning of method main

    public static void main(String[] args)
    {

// Declare and create an array for 10 numbers

        double[] numbers = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };

// Print numbers

        printArray(numbers);

// Display mean and deviation

        System.out.println("The mean is " + findMean(numbers));

        System.out.println("The standard deviation is " +

            findDeviation(numbers));

    } // End of main

/* Method for computing deviation of double values */


// Beginning of double findDeviation(double[])

    public static double findDeviation(double[] nums)
    {

        double mean = findMean(nums);

        double squareSum = 0;

        for (int i = 0; i < nums.length; i++)
        {

            squareSum += Math.pow(nums[i] - mean, 2);

        }

        return Math.sqrt((squareSum) / (nums.length - 1));

    } // End of double findDeviation(double[])

/* Method for computing deviation of int values */


// Beginning of double findDeviation(int[])

    public static double findDeviation(int[] nums)
    {

        double mean = findMean(nums);

        double squareSum = 0;

        for (int i = 0; i < nums.length; i++)
        {

            squareSum += Math.pow(nums[i] - mean, 2);

        }

        return Math.sqrt((squareSum) / (nums.length - 1));

    } // End of double findDeviation(int[])


    /** Method for computing mean of an array of double values */

// Beginning of double findMean(double[])

    public static double findMean(double[] nums)
    {

        double sum = 0;

        for (int i = 0; i < nums.length; i++)
        {

            sum += nums[i];

        }

        return sum / nums.length;

    } // End of double getMean(double[])


    /** Method for computing mean of an array of int values */

// Beginning of double findMean(int[])

    public static double findMean(int[] nums)
    {
        double sum = 0;

        for (int i = 0; i < nums.length; i++)
        {
            sum += nums[i];

        }

        return sum / nums.length;

    } // End of double getMean(int[])


/* Method for printing array */
// Beginning of void printArray(double[])

    public static void printArray(double[] nums)
    {

        for (int i = 0; i < nums.length; i++)
        {

            System.out.print(nums[i] + " ");

        }

        System.out.println();

    } // End of void printArray(double[])

} // End of class Deviation
//类偏差的开始
公共阶级偏离
{
//主方法的开始
公共静态void main(字符串[]args)
{
//声明并创建一个包含10个数字的数组
双[]数={1,2,3,4,5,6,7,8,9,10};
//打印号码
打印阵列(数字);
//显示平均值和偏差
System.out.println(“平均值为”+findMean(数字));
System.out.println(“标准偏差为”+
已发现的偏差(数字);
}//主管道末端
/*双值偏差的计算方法*/
//双findDeviation的开始(双[])
公共静态双findDeviation(双[]nums)
{
双平均值=findMean(nums);
双平方和=0;
对于(int i=0;i
您的标准偏差计算有错误:

这是查找标准偏差的算法:

Step 1: Find the mean.
Step 2: For each data point, find the square of its distance to the mean.
Step 3: Sum the values from Step 2.
Step 4: Divide by the number of data points.
Step 5: Take the square root.
因此,您的代码应该如下所示:

public static double sd (ArrayList<Integer> table)
{
    // Step 1: 
    double mean = mean(table);
    double temp = 0;

    for (int i = 0; i < table.size(); i++)
    {
        int val = table.get(i);

        // Step 2:
        double squrDiffToMean = Math.pow(val - mean, 2);

        // Step 3:
        temp += squrDiffToMean;
    }

    // Step 4:
    double meanOfDiffs = (double) temp / (double) (table.size());

    // Step 5:
    return Math.sqrt(meanOfDiffs);
}
应该是:

return (double) total / (double) table.size();

解释“标准飞行”,显示预期,显示结果。@MouseEvent我猜是关于:
return (double) total / (double) table.size();