数据处理,用C++或者Java编写,求一组数的方差均值众数标准差中位数等三十个数 100
数据处理,用C++或者Java编写,求一组数的方差均值众数标准差中位数等三十个数求助,数据挖掘编一段程序,归类整理三十个数,就像均值啊方差这些,建一个数组。然后把这个数组...
数据处理,用C++或者Java编写,求一组数的方差均值众数标准差中位数等三十个数求助,数据挖掘编一段程序,归类整理三十个数,就像均值啊方差这些,建一个数组。然后把这个数组的均值啊众数啊方差啊一堆一共三十个数弄出来
展开
2个回答
展开全部
1、完整代码如下:
2、debug:VS2012
3、三种值的求值方法已经写出。
4、C++的情况还是不要用数组了,有STL不用怎能说得过去。
#include<iostream>
#include<time.h>
#include<vector>
#include<map>
using namespace std;
int randNum(int rangeMin,int rangeMax)//随机数生成函数
{
return static_cast<double>(rand())/(RAND_MAX+1)*(rangeMax-rangeMin+1)+rangeMin;
}
double calcAverage(vector<int> vec)
{
int sum = 0;
for(vector<int>::iterator vIt=vec.begin(); vIt!=vec.end();vIt++)
sum += *vIt;
cout << "Array vecT's average is:" << sum/vec.size() << endl;
return sum/vec.size();
}
double calcVariance(double average, vector<int> vec)
{
double variance = 0;
for(vector<int>::iterator vIt=vec.begin(); vIt!=vec.end();vIt++)
variance += pow((*vIt-average),2);
cout << "Array vecT's variance is:" << variance/vec.size() << endl;
return variance/vec.size();
}
int findMode(vector<int> vec)
{
int modeCnt = 0;//判断是复数/单数个众数
map<int,int> findMode;
map<int,int> getMode;
for(vector<int>::iterator vIt=vec.begin(); vIt!=vec.end();vIt++)
++findMode[*vIt];
int max = findMode.begin()->second;
for(map<int,int>::iterator mIt=findMode.begin();mIt!=findMode.end();mIt++)
max = max >= mIt->second?max:mIt->second;
//测试用输出语句,没事请自行注释.
/*
for(map<int,int>::iterator mIt=findMode.begin();mIt!=findMode.end();mIt++)
cout << mIt->first << " " << mIt->second << endl;
*/
//比较最大值与原map容器中的值,获得的键值对插入到新的map容器中以计算数个众数
for(map<int,int>::iterator mIt=findMode.begin();mIt!=findMode.end();mIt++)
{
if(mIt->second == max)
{
getMode.insert(*mIt);
modeCnt++;
}
}
if(modeCnt>1)
cout << "There are more than 1 mode in the array:" << endl;
else
cout << "There is only one mode in the array:" << endl;
for(map<int,int>::iterator mIt=getMode.begin();mIt!=getMode.end();mIt++)
cout << mIt->first << " " << mIt->second << endl;
return 0;
}
int main()
{
//本程序仅限整数,如果想修改成template,只要加上关键字和改一改就好了。
//Find average,variance,mode in array(container)
//initialize by random.
srand(time(NULL));//随机数种子,头文件
vector<int> vecT;
for(int i=0;i!=30;i++)
vecT.push_back(randNum(1,30));
//initialize by input
/*可以通过复制数据,数据会自动以空格判断是否为第二个数,现在注释掉
int value;
while(cin >> value)
vecT.push_back(value);
cin.clear();
*/
//call function
double aver = calcAverage(vecT);
calcVariance(aver, vecT);
findMode(vecT);
return 0;
}
光点科技
2023-08-15 广告
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件...
点击进入详情页
本回答由光点科技提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询