二项分布

  • 需求: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. Elasticsearch索引模板-转载

    转载地址:https://dongbo0737.github.io/2017/06/13/elasticsearch-template/#similar_posts Elasticsearch索引模板 ...

  2. Spring Cloud Alibaba(1)---入门篇

    Spring Cloud Alibaba入门篇 有关微服务的一些概念的东西我这里就不再阐述了,因为之前在写Spring Cloud系列的时候都有详细写过. 具体地址: Spring Cloud系列博客 ...

  3. java面试-CountDownLatch、CyclicBarrier、Semaphore谈谈你的理解

    一.CountDownLatch 主要用来解决一个线程等待多个线程的场景,计数器不能循环利用 public class CountDownLatchDemo { public static void ...

  4. 【Android】修改Android Studio的SDK位置

    解决SDK占用C盘空间问题 由于Android Studio默认会将环境下载到C盘,会导致C盘空间被大量占用. 对于C盘窘迫的童鞋非常不友好. 可以通过修改SDK位置的方式缓解C盘空间焦虑. 打开&q ...

  5. Mysql之读写分离架构-Atlas

    Atlas介绍 1.png ​ Atlas是由 Qihoo 360, Web平台部基础架构团队开发维护的一个基于MySQL协议的数据中间层项目. 它是在mysql-proxy 0.8.2版本的基础上, ...

  6. Redis系统学习之SpringBoot集成Redis操作API(集成SpringDataRedis及其分析)

    SpringDataRedis调用Redis底层解读 在SpringBoot2.X之前还是直接使用的官方推荐的Jedis连接的Redis 在2.X之后换为了lettuce Jedis:采用直接连接,多 ...

  7. 过 DNF TP 驱动保护(一)

    过 DNF TP 驱动保护(一)   文章目录:                   01. 博文简介: 02. 环境及工具准备: 03. 分析 TP 所做的保护: 04. 干掉 NtOpenProc ...

  8. hdu4717 三分(散点的移动)

    题意:      给你一些点,这些点有各自的初始位置,移动速度和方向,问你什么时候任意两点中最长的距离最小,求时刻和此时的距离.. 思路:      感觉题目很赞,一开始想不到三分,因为么有办法证明他 ...

  9. Android木马病毒com.schemedroid的分析报告

    某安全公司移动病毒分析报告的面试题目,该病毒样本的代码量比较大,最大的分析障碍是该病毒样本的类名称和类方法名称以及类成员变量的名称被混淆为无法辨认的特殊字符,每个被分析的类中所有的字符串都被加密处理了 ...

  10. poj2112 二分最大流+Floyd

    题意:      一个农场主有一些奶牛,和一些机器,每台机器有自己的服务上限,就是一天最多能给多少头奶牛挤奶,给你任意两点的距离,问你让所有的奶牛都被挤奶时,奶牛于机器最远距离的最近是多少. 思路: ...