`
cq520
  • 浏览: 166433 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

如何只遍历数组一次求得数组的方差

阅读更多

        昨天完成了自己人生中的第二次笔试,不得不感慨,许多看似不重要的知识却是你平时学习的盲点。    

        这一年以来一直在做应用开发,慢慢的忽略了算法知识,昨天在考卷上碰到了这样一道题,一个长度为X的数组,里面存有N个数,能否只遍历数组一次就求得数组的方差。当时脑海里的第一反应就是:“可以”。但却怎么也想不起来计算方差的第二个公式,回来后翻看概论率与数理统计的课本,才找到了这个公式:DX^2=EX^2-(EX)^2,瞬时间,恍然大悟。代码如下:

public class Deviation {
	/**
	 * 传统的利用平均数求方差的方法,需要遍历数组两次
	 * @param a 目标数组
	 * @return 方差
	 */
	private static double ComputeVariance(double a[]){
		double variance=0;//方差
		double average=0;//平均数
		int i,len=a.length;
		double sum=0,sum2=0;
		for(i=0;i<len;i++){
			sum+=a[i];
		}
		average=sum/len;
		for(i=0;i<len;i++){
			sum2+=(a[i]-average)*(a[i]-average);
		}
		variance=sum2/len;
		return variance;
	}
	
	/**
	 * 只遍历数组一次求方差,利用公式DX^2=EX^2-(EX)^2
	 * @param a
	 * @return
	 */
	private static double ComputeVariance2(double a[]){
		double variance=0;//方差
		double sum=0,sum2=0;
		int i=0,len=a.length;
		for(;i<len;i++){
			sum+=a[i];
			sum2+=a[i]*a[i];
		}
		variance=sum2/len-(sum/len)*(sum/len);
		return variance;
	}
	
	public static void main(String args[]){
		double a[]={1,2,3,4,5};
		System.out.println(ComputeVariance(a));
		System.out.println(ComputeVariance2(a));
		
	}
}

      革命尚未成功,同志仍需努力。

3
0
分享到:
评论
2 楼 moke_earth_liangli 2014-02-24  
1 楼 mylove142235 2014-02-24  

相关推荐

    一维数组元素求均方差

    c++下编写一个程序,实现输入n个数到一维数组,并求其均方差。

    Scala里的数组方法

    在Scala语言中,数组作为一种基本的数据结构,在处理大量数据时非常有用。Scala提供了丰富的数组操作方法,这些方法可以帮助开发者更高效、更简洁地进行数组的管理和操作。下面将详细介绍Scala中的一些关键数组方法...

    方差计算器

    方差是统计学中衡量一组数据离散程度的重要指标,它反映了数据分布的不均匀性。在C语言中实现方差计算器是一项基础但关键的任务,尤其对于数据分析和实验研究而言。下面将详细介绍如何使用C语言进行方差计算,并探讨...

    cpp代码-(一维数组)计算n位学生成绩的平均分与均方差

    3. **遍历数组**:使用for循环或while循环遍历数组是计算平均分和均方差的关键。循环遍历数组中的每个元素,对成绩进行累加以计算总和,同时记录总人数(即元素个数)。 4. **平均分计算**:平均分是所有成绩总和...

    VB.source.code.variance.Calculator.rar_calculator vb _variance_v

    在VB中,我们可以使用数组来存储一组数据,使用循环结构遍历数组,进行方差计算。VB中的变量声明、数组操作、循环结构、函数调用等基础知识在这里起到了关键作用。 1. 变量声明:首先,我们需要声明一个数组来存储...

    数组快速排序法后的统计分析

    它的基本思想是分治法(Divide and Conquer),通过选择一个基准元素,将数组分成两个子数组,使得一部分元素小于基准,另一部分元素大于基准,然后递归地对这两个子数组进行快速排序,最终实现整个数组的有序排列。...

    js求数组总和、最大值、最小值、平均值、标准差.pdf

    数组的标准差是数组元素的偏离程度,通过计算数组的方差,然后计算平方根,我们可以获得数组的标准差。代码实现如下: ``` for (let i = 0; i ; i++) { sums += (Number(arr[i]) - avg) * (Number(arr[i]) - avg); ...

    计算均值和方差的代码,方便好用噢

    现在,让我们编写一个Python函数,用于计算一个列表或数组中的均值和方差。首先,我们需要导入Python的numpy库,因为这个库提供了一些方便的数据处理函数: ```python import numpy as np ``` 接下来,我们可以...

    Python简单计算数组元素平均值的方法示例

    - 使用`for`循环遍历数组中的每一个元素。 3. **数学运算** - 计算数组所有元素之和。 - 计算数组的长度。 - 计算平均值:元素总和除以元素数量。 4. **编码规范** - 编写清晰易读的代码。 - 适当的注释有助...

    C++编程练习二.docx

    它的实现是通过一个for循环,遍历数组的前`n`个元素,使用`cin`进行输入。 2. `aver()` 函数:这个函数用于计算数组的平均值。它通过初始化一个变量`sum`为零,然后遍历整个数组,累加所有元素的值,最后除以元素个...

    C# 峰度和偏度计算

    遍历数组,计算每个元素与平均值之差的三次方,然后乘以一个系数,该系数基于样本大小和方差。 6. 计算峰度。峰度的计算涉及到差值的四次方,同样需要遍历数组,计算每个元素与平均值之差的四次方,再乘以相应的系数...

    信息学奥赛一本通NOIP21方差

    在外层循环中,我们遍历数组`a`,在内层循环中,我们计算每个元素到当前元素的最小方差,并将其存储在数组`dp`中。 在计算过程中,我们使用了一个辅助变量`gap`来存储当前元素到之前元素的方差,并使用了一个辅助...

    java期末考试复习资料

    如果要扩展到三个班级,只需在数据结构和计算逻辑中增加一个维度。 2. 整数排序 这个问题展示了如何对三个整数进行排序。使用了冒泡排序的思想,通过比较和交换变量值,确保每次迭代后最大或最小的元素都能被放到...

    计算机三级C语言91-100

    2. 在`main()`函数中,初始化最大值为数组的第一个元素,然后遍历数组,更新最大值和其出现次数。另外,计算能被3或7整除的数的总和(用于计算平均值)和计数器(n)。 3. 最后,计算平均值并将其与最大值、出现次数...

    Labview二维数组按行求平均值.vi

    二维数组按行求平均值,形成一个新的一维数组

    计算机三级数据库上机100题答案(打印版).pdf

    在第三题中,通过对数组元素的遍历,可以统计出奇数和偶数的个数,计算它们的和,进而求得平均值。同时,通过已知公式计算方差,这需要先存储奇数的值,然后根据这些值进行计算。 7. 错误提示:在解题过程中,应...

    三级计算机网络机试辅导题

    在`Compute()`函数中,通过遍历数组,判断每个元素是否为奇数,记录奇数个数(odd)、累加奇数的总和(用于计算平均值),并将奇数存储到另一个数组tt中。奇数的平均值由奇数的总和除以奇数个数得到,方差则通过每个...

    jisuanqi.rar_Java均值方差_Java方差_方差 GUI

    在Java中,你可以通过遍历数组并累加元素,然后除以元素个数来实现这个计算。 ```java double sum = 0; for (int i = 0; i ; i++) { sum += data[i]; } double mean = sum / data.length; ``` 这里的`data`是一个...

    已知数组,求其均值和方差

    已知数组,求其均值和方差

Global site tag (gtag.js) - Google Analytics