gpt4 book ai didi

java - 在 Java 中,如何在不使用数组的情况下获得标准差?

转载 作者:行者123 更新时间:2023-12-02 02:52:08 25 4
gpt4 key购买 nike

使用双 float 据计算任何给定输入的计数、平均值和标准差。

每次运行该程序时,它都会给出我的计数和平均值,但我的标准差显示为 NaN。

import java.util.Scanner;

public class Final
{
public static void main (String[]args)
{
Scanner in = new Scanner(System.in);

System.out.print("Enter a range of digits to recieive 1. Count , 2. Average , 3. StdDvn");

double input = in.nextDouble();

double count = 1;
double sum = 0;
double sumsquared = sum * sum;
double std = 0;

while (in.hasNextDouble())
{ double value = in.nextDouble();

sum = input += value;
count++;
}

double average = sum / count;
std = Math.sqrt((sumsquared-(sum/count)) / (count - 1));

System.out.println("Your count of numbers is : " + count);
System.out.println("Your average of numbers is : " + average);
System.out.println("Your standard deviation of numbers is : " + std);
}
}

最佳答案

您的 sumsquared 变量始终为 0,因为您在初始化 double sum=0 后立即从 0*0 计算它;

这部分应移至求和下方。

要使用循环计算没有数组的标准差,您需要知道以下 3 个值:

  • 输入了多少个数字。
  • 所有数字的总和。
  • 数字的平方和。

公式:E[X^2]-(E[X])^2 参见 wikipedia^2 当然意味着平方

public static void main (String[]args)
{
Scanner in = new Scanner(System.in);

double count = 10.0; // how many numbers are entered, e.g.: 10
double sum1 = 0.0; // sum of the numbers
double sum2 = 0.0; // sum of the squares
System.out.println("Enter 10 numbers: ");
for (int i=0; i < 10; i++) {
double n = in.nextDouble();
sum1 += n;
sum2 += n * n;
}
double average = sum1 / count;
double variance = (count * sum2 - sum1 * sum1) / (count * count);
double stddev = Math.sqrt(variance);

System.out.println("Your count of numbers is : " + count);
System.out.println("Your average of numbers is : " + average);
System.out.println("Your standard deviation of numbers is : " + stddev);
}

关于java - 在 Java 中,如何在不使用数组的情况下获得标准差?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57101064/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com