二项分布

  • 需求:5个四面体筛子,筛子三面绿色,一面红色,模拟1000000次,统计每次试验红色落地筛子个数的分布
  • 实现:用循环实现5个筛子和1000000次试验,定义函数numRedDown模拟5个筛子试验结果,redDown模拟单次试验结果

Simulation.java

 1 import java.util.Random;
2
3 public class Simulation{
4 static final Random RANDOM = new Random();
5 static final int n = 5;
6 static final int N = 1000000;
7
8 public static void main(String[] args){
9 double[] dist = new double[n+1];
10 for(int i = 0; i < N ; i++){
11 int x = numRedDown(n);
12 ++dist[x];
13 }
14 for(int i = 0; i <=n;i++){
15 System.out.printf("%4d%8.4f%n",i,dist[i]/N);
16 }
17 }
18
19 static boolean redDown(){
20 int m = RANDOM.nextInt(4);
21 return (m==0);
22 }
23
24 static int numRedDown(int n){
25 int numRed = 0;
26 for(int i = 0; i < n; i++){
27 if(redDown()){
28 ++numRed;
29 }
30 }
31 return numRed;
32 }
33 }

BinomialDistrabutionTester.java

 1 import org.apache.commons.math3.distribution.BinomialDistribution;
2
3 public class BinomialDistributionTester {
4 static final int n = 5;
5 static final double p = 0.25;
6
7 public static void main(String[] args) {
8 BinomialDistribution bd = new BinomialDistribution(n, p);
9 for (int x = 0; x <= n; x++) {
10 System.out.printf("%4d%8.4f%n", x, bd.probability(x));
11 }
12 System.out.printf("mean = %6.4f%n", bd.getNumericalMean());
13 double variance = bd.getNumericalVariance();
14 double stdv = Math.sqrt(variance);
15 System.out.printf("standard deviation = %6.4f%n", stdv);
16 }
17 }

0 0.2381
1 0.3954
2 0.2629
3 0.0880
4 0.0145
5 0.0010

协方差

  • 需求:生成1000个随机数对(x,y),并计算x和y的相关系数
  • 实现:Apache Commons Math library 中相应方法

 1 import java.util.Random;
2 import org.apache.commons.math3.stat.correlation.Covariance;
3 import org.apache.commons.math3.stat.descriptive.moment.Variance;
4
5 public class CorrelationExample {
6 static final Random RANDOM = new Random();
7 static double[][] data1 = random(1000);
8 static double[][] data2 = {{1, 2, 3, 4, 5}, {1, 3, 5, 7, 9}};
9 static double[][] data3 = {{1, 2, 3, 4, 5}, {9, 8, 7, 6, 5}};
10
11 public static void main(String[] args) {
12 System.out.printf("rho1 = %6.3f%n", rho(data1));
13 System.out.printf("rho2 = %6.3f%n", rho(data2));
14 System.out.printf("rho3 = %6.3f%n", rho(data3));
15 }
16
17 static double[][] random(int n) {
18 double[][] a = new double[2][n];
19 for (int i = 0; i < n; i++) {
20 a[0][i] = RANDOM.nextDouble();
21 a[1][i] = RANDOM.nextDouble();
22 }
23 return a;
24 }
25
26 static double rho(double[][] data) {
27 Variance v = new Variance();
28 double varX = v.evaluate(data[0]);
29 double sigX = Math.sqrt(varX);
30 double varY = v.evaluate(data[1]);
31 double sigY = Math.sqrt(varY);
32 Covariance c = new Covariance(data);
33 double sigXY = c.covariance(data[0], data[1]);
34 return sigXY/(sigX*sigY);
35 }
36 }

rho1 = -0.036
rho2 = 1.000
rho3 = -1.000

正态分布

  • 需求:模拟均值16,标准差2.82的正态分布
  • 实现:Apache Commons Math library 的 NomorDistribution类

 1 import org.apache.commons.math3.distribution.NormalDistribution;
2
3 public class NormalDistributionTester {
4 static int n = 32;
5 static double p = 0.5;
6 static double mu = n*p;
7 static double sigma = Math.sqrt(n*p*(1-p));
8
9 public static void main(String[] args) {
10 NormalDistribution nd = new NormalDistribution(mu, sigma);
11
12 double a = 17.5, b = 21.5;
13 double Fa = nd.cumulativeProbability(a);
14 System.out.printf("F(a) = %6.4f%n", Fa);
15 double Fb = nd.cumulativeProbability(b);
16 System.out.printf("F(b) = %6.4f%n", Fb);
17 System.out.printf("F(b) - F(a) = %6.4f%n", Fb - Fa);
18 }
19 }

F(a) = 0.7021
F(b) = 0.9741
F(b) - F(a) = 0.2720

[Java] 数据分析--统计的更多相关文章

  1. 编写Java脚本统计工程代码总行数

    在新公司工作将近一年了,一直独自一人负责服务端集群的运维和代码的编写.不知不觉从一个Project发展到了七八个Project. 看着越来越多的代码,今天突然想统计一下一共写了多少代码.[这里只统计完 ...

  2. 基于Hadoop的地震数据分析统计

    源码下载地址:http://download.csdn.net/detail/huhui_bj/5645641 opencsv下载地址:http://download.csdn.net/detail/ ...

  3. 通过java api统计hive库下的所有表的文件个数、文件大小

    更新hadoop fs 命令实现: [ss@db csv]$ hadoop fs -count /my_rc/my_hive_db/* 18/01/14 15:40:19 INFO hdfs.Peer ...

  4. Java 中统计文件中出现单词的次数练习

    统计英文article.txt文件中出现hello这个单词的次数 这个是article.txt文件内容 { hello The Royal Navy is trying hello to play h ...

  5. Java中统计字符串中各个字符出现的次数

    import java.util.Iterator; import java.util.Set; import java.util.TreeMap; public class TreeMapDemo ...

  6. Java实验--统计字母出现频率及其单词个数

    本周的实验要求在之前实现统计单词的基础之上(可以见之前博客的统计单词的那个实验),对其进行修改成所需要的格式,统计字母出现频率的功能,并按照一定的格式把最终结果的用特定的格式在文本中显示出来 统计过程 ...

  7. JAVA实验--统计文章中单词的个数并排序

    分析: 1)要统计单词的个数,就自己的对文章中单词出现的判断的理解来说是:当出现一个非字母的字符的时候,对前面的一部分字符串归结为单词 2)对于最后要判断字母出现的个数这个问题,我认为应该是要用到ma ...

  8. Java报表统计导出Word-xdocin方式

    官网:http://www.xdocin.com Controller层: //创建对象 XDocService xdocService = new XDocService(); //封装参数 Map ...

  9. Java查找统计文中字母,单词

    package io; import java.io.BufferedReader; import java.io.File; import java.io.FileOutputStream; imp ...

随机推荐

  1. 【linux】驱动-8-一文解决设备树

    目录 前言 8. Linux设备树 8.1 设备树简介 8.2 设备树框架 8.2.1 设备树格式 8.2.1.1 DTS 文件布局 8.2.1.2 node 格式 8.2.1.3 propertie ...

  2. MindSpore函数拟合

    技术背景 在前面一篇博客中我们介绍过基于docker的mindspore编程环境配置,这里我们基于这个环境,使用mindspore来拟合一个线性的函数,演示一下mindspore的基本用法. 环境准备 ...

  3. ubuntu16.04 安装opencv3.4.0

    参考 https://www.cnblogs.com/arkenstone/p/6490017.html https://blog.csdn.net/u013180339/article/detail ...

  4. 理解和解决Java并发修改异常:ConcurrentModificationException

    參考文獻:https://www.jianshu.com/p/f3f6b12330c1 文獻来源:简书 关键字: Java Exception遇到异常信息Exception in thread &qu ...

  5. Kubernetes 查看node

    // 查看所有节点及labelskubectl get nodes --show-labels 删除节点的labels # 语法 kubectl label nodes <node-name&g ...

  6. day12.函数其它与模块1

    一.函数递归 函数的递归调用:是函数嵌套调用的一种特殊形式 具体指的是在调用一个函数的过程中又直接或者间接地调用自己,称之为函数的递归调用 函数的递归调用其实就是用函数实现的循环 # def f1() ...

  7. PAT归纳总结——关于二叉树的一些总结

    今天是6月26日到下个月的这个时候已经考过试了,为了让自己考一个更高的分数,所以我打算把PAT的相关题型做一个总结.目前想到的方法就是将相关的题型整理到一起然后,针对这种题型整理出一些方法. 二叉树的 ...

  8. 1.7.1- HTML表格table

    存在即是合理的,表格的是一种常用的标签,不是用来布局,常见是用处理 适合用表格table的地方: 创建表格:

  9. hdu3460 字典树(打印机)

    题意:        给你一些名字,让你用一台打印机去打印这些名字,打印机只有三个操作 (1)打印的都是小写字母 (2)每次可以在当前字母的后面加一位,或删除一位. (3)打印当前串 问你最少多少步可 ...

  10. LA3708墓地雕塑

    题意:       有N个墓碑,等距离的分布在一个圆形墓地的周围,然后又要添加m个墓碑,最后要求所有的墓碑还是等距离,添加的墓碑可以放在任意位置,问之前的N个墓碑的最少移动距离之和是多少? 思路:   ...