程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长


+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

SCAU 概率论 期末复习(开卷)

发布于2021-05-29 22:10     阅读(966)     评论(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黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

26 0
收藏该文
已收藏

评论内容:(最多支持255个字符)