java标准差
Ⅰ 急求:用java语言编写队列中每一列的标准差,求高手解救
package 回答;
import java.text.DecimalFormat;
public class BiaoZC {
public static void main(String[] args){
int[][] a = {{1 ,3 ,9 ,5 ,1},
{5 ,6 ,4 ,5 ,4},
{7 ,0 ,7 ,1 ,0},
{1 ,0 ,3 ,0 ,5},
{5 ,4 ,2 ,9 ,7},
{6 ,7 ,3 ,9 ,2},
{4 ,4 ,8 ,6 ,0},
{5 ,4 ,3 ,6 ,5},
{7 ,6 ,8 ,5 ,0},
{2 ,1 ,0 ,0 ,2},
{6 ,6 ,8 ,8 ,5},
{6 ,7 ,6 ,8 ,2},
{6 ,3 ,6 ,7 ,5},
{2 ,0 ,6 ,7 ,2},
{4 ,2 ,0 ,8 ,0},
{3 ,0 ,0 ,8 ,2},
{5 ,4 ,4 ,4 ,4},
{6 ,7 ,8 ,9 ,0},
{3 ,4 ,6 ,5 ,1},
{2 ,4 ,3 ,4 ,5},
{3 ,1 ,8 ,6 ,0},
{4 ,5 ,7 ,9 ,2},
{2 ,1 ,5 ,4 ,0},
{1 ,7 ,2 ,9 ,0},
{6 ,6 ,6 ,8 ,4},
{5 ,0 ,0 ,8 ,0},
{7 ,3 ,2 ,8 ,1},
{9 ,8 ,6 ,7 ,6},
{9 ,7 ,2 ,4 ,6},
{6 ,6 ,4 ,8 ,5},
{7 ,8 ,9 ,8 ,0},
{6 ,4 ,0 ,0 ,7},
{7 ,5 ,0 ,4 ,0},
{8 ,0 ,4 ,8 ,0},
{4 ,3 ,1 ,2 ,5},
{7 ,4 ,9 ,9 ,4},
{8 ,5 ,1 ,4 ,1},
{5 ,5 ,0 ,8 ,6},
{7 ,0 ,0 ,8 ,4},
{6 ,2 ,9 ,2 ,4},
{8 ,0 ,2 ,7 ,0},
{5 ,0 ,2 ,7 ,2},
{7 ,2 ,0 ,9 ,0},
{5 ,0 ,2 ,8 ,3},
{7 ,0 ,8 ,5 ,0},
{2 ,4 ,6 ,7 ,0}
};
double var = 0,sum = 0,m;
String s,ss;
DecimalFormat format = new DecimalFormat("#0.00");
for(int i=0;i<a[0].length;i++){
for(int j=0;j<a.length;j++)
sum += a[j][i];
m = sum/a.length;
for(int j=0;j<a.length;j++)
var += Math.pow(a[j][i]-m,2);
s = format.format(m);
ss = format.format(Math.sqrt(var));
System.out.println("第"+(i+1)+"列的平均数为:"+s);
System.out.println("第"+(i+1)+"列的方差为:"+ss);
}
}
}
你可以从文件读取这个数据,剩下的自己去做吧
Ⅱ 如何用java程序导入表格数据,并且求出每列的标准差,求代码。越详细越好。
jar包下载地址:http://files.cnblogs.com/gmq/poi.rar
下载完把rar改为jar,参考别人的,呵呵
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFDateUtil;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
public class ReadExcel {
public static void main(String[] args) throws Exception {
File file = new File("src/test.xls");
String[][] result = getData(file, 0);
getStd(result);
}
public static double[] getStd(String[][] result) {
int rowLength = result.length;
int colLength = result[0].length;
int[][] marx = new int[rowLength][colLength - 1];
// 将字符串数组转换为double数组,注:字符串本身要为数字哦
for (int i = 0; i < rowLength; i++) {
for (int j = 0; j < colLength - 1; j++) {
marx[i][j] = new Integer(result[i][j]);
}
}
double[] sum = new double[marx[0].length];
double[] avg = new double[marx[0].length];
double[] std = new double[marx[0].length];
double temp = 0;
for (int j = 0; j < marx[0].length; j++) {
for (int i = 0; i < marx.length; i++) {
sum[j] += marx[i][j];
avg[j] = sum[j] / marx.length;
temp = marx[i][j] - avg[j];
temp = Math.pow(temp, 2) / marx.length;
std[j] = Math.pow(temp, 0.5);
}
}
System.out.println("表格数据:"+rowLength+" 行, "+(colLength-1)+" 列");
System.out.println("计算结果为");
System.out.println("sum = ");
printArray(sum);
System.out.println("\navg = ");
printArray(avg);
System.out.println("\nstd = ");
printArray(std);
return std;
}
/**
* 输出
*/
public static void printArray(double[] a) {
for (double i : a) {
System.out.print(i + " ");
}
}
/**
*
* 读取Excel的内容,第一维数组存储的是一行中格列的值,二维数组存储的是多少个行
*
* @param file
* 读取数据的源Excel
* @param ignoreRows
* 读取数据忽略的行数,比喻行头不需要读入 忽略的行数为1
* @return 读出的Excel中数据的内容
* @throws FileNotFoundException
* @throws IOException
*/
public static String[][] getData(File file, int ignoreRows)
throws FileNotFoundException, IOException {
List<String[]> result = new ArrayList<String[]>();
int rowSize = 0;
BufferedInputStream in = new BufferedInputStream(new FileInputStream(
file));
// 打开HSSFWorkbook
POIFSFileSystem fs = new POIFSFileSystem(in);
HSSFWorkbook wb = new HSSFWorkbook(fs);
HSSFCell cell = null;
for (int sheetIndex = 0; sheetIndex < wb.getNumberOfSheets(); sheetIndex++) {
HSSFSheet st = wb.getSheetAt(sheetIndex);
// 第一行为标题,不取
for (int rowIndex = ignoreRows; rowIndex <= st.getLastRowNum(); rowIndex++) {
HSSFRow row = st.getRow(rowIndex);
if (row == null) {
continue;
}
int tempRowSize = row.getLastCellNum() + 1;
if (tempRowSize > rowSize) {
rowSize = tempRowSize;
}
String[] values = new String[rowSize];
Arrays.fill(values, "");
boolean hasValue = false;
for (short columnIndex = 0; columnIndex <= row.getLastCellNum(); columnIndex++) {
String value = "";
cell = row.getCell(columnIndex);
if (cell != null) {
// 注意:一定要设成这个,否则可能会出现乱码
cell.setEncoding(HSSFCell.ENCODING_UTF_16);
switch (cell.getCellType()) {
case HSSFCell.CELL_TYPE_STRING:
value = cell.getStringCellValue();
break;
case HSSFCell.CELL_TYPE_NUMERIC:
if (HSSFDateUtil.isCellDateFormatted(cell)) {
Date date = cell.getDateCellValue();
if (date != null) {
value = new SimpleDateFormat("yyyy-MM-dd")
.format(date);
} else {
value = "";
}
} else {
value = new DecimalFormat("0").format(cell
.getNumericCellValue());
}
break;
case HSSFCell.CELL_TYPE_FORMULA:
// 导入时如果为公式生成的数据则无值
if (!cell.getStringCellValue().equals("")) {
value = cell.getStringCellValue();
} else {
value = cell.getNumericCellValue() + "";
}
break;
case HSSFCell.CELL_TYPE_BLANK:
break;
case HSSFCell.CELL_TYPE_ERROR:
value = "";
break;
case HSSFCell.CELL_TYPE_BOOLEAN:
value = (cell.getBooleanCellValue() == true ? "Y"
: "N");
break;
default:
value = "";
}
}
if (columnIndex == 0 && value.trim().equals("")) {
break;
}
values[columnIndex] = rightTrim(value);
hasValue = true;
}
if (hasValue) {
result.add(values);
}
}
}
in.close();
String[][] returnArray = new String[result.size()][rowSize];
for (int i = 0; i < returnArray.length; i++) {
returnArray[i] = (String[]) result.get(i);
}
return returnArray;
}
/**
*
* 去掉字符串右边的空格
*
* @param str
* 要处理的字符串
* @return 处理后的字符串
*/
public static String rightTrim(String str) {
if (str == null) {
return "";
}
int length = str.length();
for (int i = length - 1; i >= 0; i--) {
if (str.charAt(i) != 0x20) {
break;
}
length--;
}
return str.substring(0, length);
}
}
Ⅲ 用JAVA计算学生成绩及标准差
五门课程各定义一个数组 然后容量为班里的人数 人数的顺序一定的 这样 各个的平均成绩就是五个数组相加 当然 数组中的那个人不能变 这样 什么都能求出来了
Ⅳ java 怎样计算标准差
仅供参考
Ⅳ java调用方法求平均值和标准差的问题。
Populationstandard deviation:
如是总体(即估算总体方差),根号内除以n MySql对应的函数是STD(对应excel函数:STDEVP);
Samplestandard deviation:
如是抽样(即估算样本方差),根号内除以(n-1)MYSql对应的函数是STDDEV_SAMP(对应excel函数:STDEV);
Ⅵ java 标准差
因为是java 的double类型,可以使用 NubmerFormat进行格式化输出的
Ⅶ 计算数字的标准差的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());
}
}
这个例子可以实现你的功能,数据源自己提供!
Ⅷ 1,输入10个数(使用for循环或do-while) 2,求出其中最大值,最小值,均值,标准差 用Java写
publicclassTest{
publicstaticvoidmain(String[]args){
System.out.println("请输入10个double类型的数,并以空格隔开:");
Scannerinput=newScanner(System.in);
double[]arr=newdouble[10];
for(inti=0;i<10;i++){
arr[i]=input.nextDouble();
}
System.out.println(min(arr));
System.out.println(max(arr));
System.out.println("平均数:"+avg(arr));
System.out.println(standard(arr));
}
/**
*标准差
*/
publicstaticStringstandard(double[]arr){
doublesum=0;
doubleavg=avg(arr);
for(inti=0;i<arr.length;i++){
sum=sum+Math.pow((arr[i]-avg),2);
}
return"标准差:"+Math.sqrt(sum/arr.length);
}
/**
*平均值
*/
publicstaticdoubleavg(double[]arr){
doublesum=0;
for(doublea:arr){
sum=sum+a;
}
returnsum/arr.length;
}
/**
*最大值
*/
publicstaticStringmax(double[]arr){
Arrays.sort(arr);
return"最大值:"+arr[arr.length-1];
}
/**
*最小值
*/
publicstaticStringmin(double[]arr){
Arrays.sort(arr);
return"最小值:"+arr[0];
}
}
Ⅸ 作业题:java作业 求和,平均数,最大数,最小数,标准差
参考如下
public static main(String[] args){
int[] is={3,2,5,35,17,28,21,45,7};
int max = is[0];
int min = is[0];
int sum = 0;
double ave = 0.0;
double StanDev=0.0;
for(int i=0;i<is.length;i++){
if(is[i]>max){
max=is[i];
}
if(is[i]<min){
min=is[i];
}
sum+=is[i];
}
ave = sum*1.0/is.lenght;
for(int i = 0;i < is.length;i++){
sum += Math.sqrt(((double)is[i] -ave) * (is[i] -ave));
}
StanDev=(sum / (num - 1));
System.out.println("最小是:"+min);
System.out.println("最大是:"+max);
System.out.println("平均值是:"+ave);
System.out.println("标准差是:"+ StanDev );}
Ⅹ 计算数字的标准差的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());
}