java方差
‘壹’ java中怎样编写计算方差的程序
import java.util.Scanner;
public class NumTest {
public static void main(String[] args){
double num=0;
Scanner s = new Scanner(System.in);
System.out.println("请输入你需要计算的个数:");
int n = s.nextInt();
double[] list=new double[n];
for (int i = 1; i <= n; i++) {
System.out.println("请输入第"+i+"个数:");
list[i-1]=s.nextDouble();
num+=list[i-1];
}
double mean=num/n;
double var=0;
for(double d:list){
var+=(d-mean)*(d-mean);
}
System.out.println("方差是:"+var/n);
}
}
‘贰’ 用java写一个求平均数,方差的程序,有输入界面,谢谢了
有输入界面?用Scanner还是Frame?
暂定以集合的方式储存吧。。。给你写实现方法。。。 自己吧数据放入集合中。。。
public double meanValue(ArrayList allNumber) {
double value = 0;
for (int i = 0; i < allNumber.size(); i++) {
value += allNumber.get(i);
}
value /= allNumber.size();
return value;
}
public double VarianceValue(ArrayList allNumber) {
double value = 0;
double variance = meanValue(allNumber);
for (int i = 0; i < allNumber.size() {
double x = (allNumber.get(i) - variance) * (allNumber.get(i) - variance);
value += x;
}
value /= allNumber.size();
return value;
}
‘叁’ 数据处理,用C++或者Java编写,求一组数的方差均值众数标准差中位数等三十个数
1、完整代码如下:
2、debug:VS2012
3、三种值的求值方法已经写出。
4、C++的情况还是不要用数组了,有STL不用怎能说得过去。
#include<iostream>
#include<time.h>
#include<vector>
#include<map>
usingnamespacestd;
intrandNum(intrangeMin,intrangeMax)//随机数生成函数
{
returnstatic_cast<double>(rand())/(RAND_MAX+1)*(rangeMax-rangeMin+1)+rangeMin;
}
doublecalcAverage(vector<int>vec)
{
intsum=0;
for(vector<int>::iteratorvIt=vec.begin();vIt!=vec.end();vIt++)
sum+=*vIt;
cout<<"ArrayvecT'saverageis:"<<sum/vec.size()<<endl;
returnsum/vec.size();
}
doublecalcVariance(doubleaverage,vector<int>vec)
{
doublevariance=0;
for(vector<int>::iteratorvIt=vec.begin();vIt!=vec.end();vIt++)
variance+=pow((*vIt-average),2);
cout<<"ArrayvecT'svarianceis:"<<variance/vec.size()<<endl;
returnvariance/vec.size();
}
intfindMode(vector<int>vec)
{
intmodeCnt=0;//判断是复数/单数个众数
map<int,int>findMode;
map<int,int>getMode;
for(vector<int>::iteratorvIt=vec.begin();vIt!=vec.end();vIt++)
++findMode[*vIt];
intmax=findMode.begin()->second;
for(map<int,int>::iteratormIt=findMode.begin();mIt!=findMode.end();mIt++)
max=max>=mIt->second?max:mIt->second;
//测试用输出语句,没事请自行注释.
/*
for(map<int,int>::iteratormIt=findMode.begin();mIt!=findMode.end();mIt++)
cout<<mIt->first<<""<<mIt->second<<endl;
*/
//比较最大值与原map容器中的值,获得的键值对插入到新的map容器中以计算数个众数
for(map<int,int>::iteratormIt=findMode.begin();mIt!=findMode.end();mIt++)
{
if(mIt->second==max)
{
getMode.insert(*mIt);
modeCnt++;
}
}
if(modeCnt>1)
cout<<":"<<endl;
else
cout<<"Thereisonlyonemodeinthearray:"<<endl;
for(map<int,int>::iteratormIt=getMode.begin();mIt!=getMode.end();mIt++)
cout<<mIt->first<<""<<mIt->second<<endl;
return0;
}
intmain()
{
//本程序仅限整数,如果想修改成template,只要加上关键字和改一改就好了。
//Findaverage,variance,modeinarray(container)
//initializebyrandom.
srand(time(NULL));//随机数种子,头文件
vector<int>vecT;
for(inti=0;i!=30;i++)
vecT.push_back(randNum(1,30));
//initializebyinput
/*可以通过复制数据,数据会自动以空格判断是否为第二个数,现在注释掉
intvalue;
while(cin>>value)
vecT.push_back(value);
cin.clear();
*/
//callfunction
doubleaver=calcAverage(vecT);
calcVariance(aver,vecT);
findMode(vecT);
return0;
}
‘肆’ Java函数中randomGaussian可以设置想要的期望跟方差吗
应该是可以的吧。
你试一下吧。
‘伍’ 数据处理,用C++或者Java编写,求一组数的方差均值众数标准差中位数等
平均数、众数、中位数这三个统计量的各自特点是:
平均数的大小与一组数据里的每个数据均有关系,其中任何数据的变动都会相应引起平均数的变动;众数则着眼于对各数据出现的次数的考察,其大小只与这组数据中的部分数据有关,当一组数据中有不少数据多次重复出现时,其众数往往是我们关心的一种统计量;中位数则仅与数据排列位置有关,当一组数据从小到大排列后,最中间的数据为中位数(偶数个数据的最中间两个的平均数)。因此某些数据的变动对它的中位数影响不大。
在同一组数据中,众数、中位数和平均数也各有其特性:
(1)中位数与平均数是唯一存在的,而众数是不唯一的;
(2)众数、中位数和平均数在一般情况下是各不相等,但在特殊情况下也可能相等。
具体来说,平均数、众数和中位数都是描述一组数据的集中趋势的特征数,但描述的角度和适用范围有所不同。平均数的大小与一组数据里的每个数据均有关系,其中任何数据的变动都会引起平均数的相应变动;众数着眼于对各数据出现的频数的考察,其大小只与这组数据中的部分数据有关;中位数则仅与数据的排列位置有关,某些数据的变动对中位数没有影响,当一组数据中的个别数据变动较大时,可用它来描述其集中趋势。
一般来说,平均数、中位数和钟书都是一组数据的代表,分别代表这组数据的“一般水平”、“中等水平”和“多数水平”。平均数涉及所有的数据,中位数和众数只涉及部分数据。它们互相之间可以相等也可以不相等,没有固定的大小关系。
其实,它们三者有关联也有区别。在一组数据中出现次数最多的数就是这组数据众数,众数和平均数一样,也是描述一组数据集中趋势的统计量,但它和平均数有以下两点不同:一是平均数只是一个“虚拟”的数,即一组数据的和除以该组数据的个数所得的商,而众数不是“虚拟”的数,是一组数据中出现次数最多的那个数据,是这组数据中真实存在的一个数据;二是平均数的大小与一组数据里的每个数据都有关系,任何一个数据的变动都会引起平均数大小的改变,而众数则仅与一组数据的出现的次数有关,某些数据的变动对众数没有影响,所以在一组数据中,如果个别数据变动较大,但某个数据出现的次数最多,此时用该数据(即众数)表示这组数据的“集中趋势”比较合适。
中位数和平均数一样,也是反映一组数据集中趋势的一个统计量。平均数主要反映一组数据的一般水平,中位数则更好地反映了一组数据的中等水平。它和平均数有以下不同:一是平均数只是一个“虚拟”的数,而中位数并不完全是“虚拟”数,当一组数据有奇数个时,它就是该组数据顺序排列后中间的那个数据,是这组数据中真实存在的一个数据;二是平均数的大小与一组数据里的每个数据都有关系,任何一个数据的变动都会引起平均数大小的改变,而中位数则仅与一组数据的排列位置有关,某些数据的变动对中位数没有影响,所以当一组数据的个别数据偏大或偏小时,用中位数来描述该组数据的集中趋势就比较合适。
‘陆’ java 求 数组的方差
public static void main(String[] args) {
double[] array = { 1, 2, 3, 4, 5, 6 };
double ave = 0;
for (int i = 0; i < array.length; i++)
ave += array[i];
ave /= array.length;
double sum = 0;
for(int i = 0;i<array.length;i++)
sum += (array[i] - ave) * (array[i] - ave) ;
sum /= array.length;
System.out.println(sum);
}
‘柒’ 在Java中怎么求方差和标准差
Java求方差和标准差:
public class GetAverageandStandardDevition {
private int[] array = new int[10];
private int num = 10;
public int getRandomDigit() {
return (int) (Math.random() * 1000);
}
public void getTargetDigit() {
for (int i = 0; i < num; i++) {
array[i] = getRandomDigit();
System.out.println(array[i]);
}
}
//方差
public double getAverage(){
int sum = 0;
for(int i = 0;i < num;i++){
sum += array[i];
}
return (double)(sum / num);
}
//标准差
public double getStandardDevition(){
double sum = 0;
for(int i = 0;i < num;i++){
sum += Math.sqrt(((double)array[i] -getAverage()) * (array[i] -getAverage()));
}
return (sum / (num - 1));
}
public static void main(String[] args) {
GetAverageandStandardDevition gcs = new GetAverageandStandardDevition();
gcs.getTargetDigit();
System.out.println(gcs.getAverage() + " " + gcs.getStandardDevition());
}
‘捌’ java 用java设计一个均值方差计算器。
上图看到的就是界面。
整个程序,不算很复杂,文件IO+简单界面+算法