发布于2021-05-29 22:10 阅读(1104) 评论(0) 点赞(26) 收藏(1)
说明:由于考试是上机开卷,所以下面写出了求值的代码(java),考试的时候可以直接输入数据即可获得答案。
1.求下四分位,中位数和上四分位
package com.company;
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
int n;
Scanner cin = new Scanner(System.in);
System.out.println("输入一共有几个数字");
n = cin.nextInt();
double[] arr = new double[n];
System.out.println("输入数组");
for(int i=0;i<n;i++){
arr[i] = cin.nextDouble();
}
System.out.println("下四分位,中位数,上四分位分别是:");
System.out.println(Arrays.toString(getQuartiles(arr)));
// write your code here
}
/**
* 四分位算法
*@param arr 长度为n的数组
*@return quartiles Q1/Q2/Q3数组
**/
public static double[] getQuartiles(double[] arr) {
double[] arr1 = new double[4];
// 长度小于4时,补齐arr数组至长度四位
if (arr.length < 4) {
for (int i = 0; i < arr.length; i++) {
arr1[i] = arr[i];
}
for (int k = arr.length; k < 4; k++) {
arr1[k] = arr1[k];
}
return arr1;
}
double[] tempArr = Arrays.copyOf(arr, arr.length);
Arrays.sort(tempArr);
double[] quartiles = new double[3];
int n = arr.length;
double Q1 = (n+1) * 0.25D;
double Q2 = (n+1) * 0.5D;
double Q3 = (n+1) * 0.75D;
//Q1
if(Q1 % 2 == 0){
quartiles[0] = tempArr[(int)Q1];
}else{
double Q1y = Q1-Math.floor(Q1);
double Q1r;
Q1r = (1D - Q1y) * tempArr[(int) Math.floor(Q1)-1] + Q1y * tempArr[(int) Math.ceil(Q1)-1];
quartiles[0] = Q1r;
}
//Q2
if(Q2 % 2 == 0){
quartiles[1] = tempArr[(int)Q2];
}else{
double Q2y = Q2-Math.floor(Q2);
double Q2r;
Q2r = (1D - Q2y) * tempArr[(int) Math.floor(Q2)-1] + Q2y * tempArr[(int) Math.ceil(Q2)-1];
quartiles[1] = Q2r;
}
//Q3
if(Q3 % 2 == 0){
quartiles[2] = tempArr[(int)Q3];
}else{
double Q3y = Q3-Math.floor(Q3);
double Q3r;
Q3r = (1D - Q3y) * tempArr[(int) Math.floor(Q3)-1] + Q3y * tempArr[(int) Math.ceil(Q3)-1];
quartiles[2] = Q3r;
}
return quartiles;
}
}
2.切比雪夫不等式
任意一个数据集中,位于其平均数m个标准差范围内的比例(或部分)总是至少为1-1/m2,其中m为大于1的任意正数。对于m=2,m=3和m=5有如下结果:
所有数据中,至少有3/4(或75%)的数据位于平均数2个标准差范围内。
所有数据中,至少有8/9(或88.9%)的数据位于平均数3个标准差范围内。
所有数据中,至少有24/25(或96%)的数据位于平均数5个标准差范围内 [2] 。
3.求平均值、总和、标准差、方差
package com.company;
import java.text.DecimalFormat;
import java.util.*;
public class Main{
public static void main(String[] args) {
int n;
Scanner cin = new Scanner(System.in);
System.out.println("输入数字的个数:");
n = cin.nextInt();
double[] x = new double[n];
for (int i = 0; i < n; i++) {// 随机生成n个double数
x[i] = cin.nextDouble();
}
// 设置doubl字符串输出格式,不以科学计数法输出
DecimalFormat df = new DecimalFormat("#,##0.00");// 格式化设置
// 计算方差
double dV = Variance(x);
System.out.println("方差=" + df.format(dV));
// 计算标准差
double dS = StandardDiviation(x);
System.out.println("标准差=" + df.format(dS));
}
//方差s^2=[(x1-x)^2 +...(xn-x)^2]/n 或者s^2=[(x1-x)^2 +...(xn-x)^2]/(n-1)
public static double Variance(double[] x) {
int m=x.length;
double sum=0;
for(int i=0;i<m;i++){//求和
sum+=x[i];
}
System.out.println("总和="+sum);
double dAve=sum/m;//求平均值
System.out.println("平均值="+dAve);
double dVar=0;
for(int i=0;i<m;i++){//求方差
dVar+=(x[i]-dAve)*(x[i]-dAve);
}
return dVar/m;
}
//标准差σ=sqrt(s^2)
public static double StandardDiviation(double[] x) {
int m=x.length;
double sum=0;
for(int i=0;i<m;i++){//求和
sum+=x[i];
}
double dAve=sum/m;//求平均值
double dVar=0;
for(int i=0;i<m;i++){//求方差
dVar+=(x[i]-dAve)*(x[i]-dAve);
}
//reture Math.sqrt(dVar/(m-1));
return Math.sqrt(dVar/m);
}
}
4.知道标准差和平均值,求某范围占比
利用正态分布来计算
5.离散系数
一组数据的标准差与其相应的均值之比,是测度数据离散程度的相对指标,其作用主要是用于比较不同组别数据的离散程度。 其计算公式为
在对比情况下,离散系数较大的其分布情况差异也大。
1.求带概率的标准差
先算期望 E(X) = 10.25 + 20.45 + 3 0.3 = 2.05再算 E(X²) = 1²0.25 + 2²*0.45 + 3² *0.3 = 4.75所以方差D(X)=E(X²)-E(X)²=0.5475标准差就开根号 为 0.74
** 1.求置信区间 **
package com.company;
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner cin = new Scanner(System.in);
int n;
System.out.println("输入样本的数量:");
n = cin.nextInt();
double x;
System.out.println("输入样本的均值:");
x = cin.nextDouble();
double variance;
System.out.println("输入方差,或者标准差的平方:");
variance = cin.nextDouble();
System.out.println("输入概率的正态值(95%的值是1.96):");
double y;
y = cin.nextDouble();
double v = Math.sqrt(variance) / Math.sqrt(n);
System.out.println(x+"-"+y*v +","+x+"+"+ y*v);
System.out.println(x- y*v +","+(x+ y*v));
}
}
次方运算
package com.company;
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
System.out.println("请输入几的几方:");
double a;
int n;
double result=1;
Scanner cin = new Scanner(System.in);
a = cin.nextDouble();
n = cin.nextInt();
for(int i=0;i<n;i++){
result = result*a;
}
System.out.println("结果是:"+result);
}
}
作者:我是个大美女
链接:http://www.javaheidong.com/blog/article/207547/d7b9267ec0995931af19/
来源:java黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 java黑洞网 All Rights Reserved 版权所有,并保留所有权利。京ICP备18063182号-2
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!