`
cq520
  • 浏览: 165472 次
  • 性别: 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语言关于数组方法的整合,包括详细的各个函数名及作用

    方差计算器

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

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

    它的基本思想是分治法(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 ``` 接下来,我们可以...

    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中。奇数的平均值由奇数的总和除以奇数个数得到,方差则通过每个...

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

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

    算法-统计数字 源代码

    在C++中,可以使用循环结构遍历数组,计算总和,然后除以元素数量得到平均值。 2. 中位数:中位数是将一组数据从小到大排列后处于中间位置的数,如果数据个数为偶数,则取中间两个数的平均值。在编程中,可以先对...

    VB6.0写一个方差计算器.rar

    VB方差计算器示例,您看到的这个软件是原代码共享计划的一个产物,点击这里下载本程序原代码。在方差计算器的文本框内输入数据,每个数据...代码中a为需要排序的数组,sheng为True则为升序排列,为False,则为降序排列。

    var2d:二维方差-matlab开发

    在这个场景下,`var2d`显然是一个自定义的MATLAB函数,用于计算二维矩阵(数组)的方差。下面我们将深入探讨二维方差的计算方法以及如何在MATLAB中实现这个功能。 首先,让我们了解什么是方差。方差是所有数据与...

    计算机等级考试三级数据库上机100题

    例如,在代码中,我们看到一个双重循环用于遍历数组并进行排序,然后将排序后的前10个元素存储到新的数组中。 2. **“SIX”与“NINE”的问题** 这一题是一个逻辑推理与循环遍历的结合。题目给出了等式"SIX + SIX +...

Global site tag (gtag.js) - Google Analytics