欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

Commons Math學習筆記——分布

系統 1990 0

看其他篇章到 目錄 選擇。

概率分布是概率論的一個基礎。

Commons Math 包中也專門有一個子包對概率分布進行了封裝實現。在 distribution 包中,定義了一個基本接口 Distribution 。該接口只有兩個方法,一個是 double cumulativeProbability (double x) ,一個是 double cumulativeProbability (double x0, double x1) 。前者對于服從某種分布的隨機變量X,返回P(X<=x);后者則返回P(x0<=X<=x1)。正如其名所示,這樣也就得到了概率。

具體 distribution 包中實現了基本所有的概率分布,分為連續型分布和離散型分布,連續型包括了像熟悉的指數分布、柯西分布等,離散型包括了泊松分布和二項分布等等。具體的類圖結構見下圖:

Commons Math學習筆記——分布

?

在連續型的 ContinuousDistribution 接口中,添加了一個 double inverseCumulativeProbability (double p) 的方法,這個方法返回 P(X<x)=p 中的 x 。也就是說通過已知概率,可以求得隨機變量 X x 范圍。當然看 api 文檔還應注意一句,在 3.0 的版本中會加入 public double density(double x) 這個求概率密度函數的方法,敬請期待吧。離散型的接口 DiscreteDistribution 中則添加了 double probability (double x) 方法,用來計算 P(X=x) 的概率。

具體的代碼我們以離散型的泊松分布和連續型的正態分布來講解。泊松分布的接口繼承了 IntegerDistribution 接口,在此基礎上加了 getMean() 方法和 normalApproximateProbability() 方法。正態分布 NormalDistribution 繼承了 ContinuousDistribution ,又添加了 getMean() 方法和 double density(double x) 方法以及 getStandardDeviation() 方法。

?

?1 /**
?2 ? * ?
?3 ? */
?4 package ?algorithm . math;
?5
?6 import ?org . apache . commons . math . MathException;
?7 import ?org . apache . commons . math . distribution . NormalDistribution;
?8 import ?org . apache . commons . math . distribution . NormalDistributionImpl;
?9 import ?org . apache . commons . math . distribution . PoissonDistribution;
10 import ?org . apache . commons . math . distribution . PoissonDistributionImpl;
11
12 /**
13 ? * ? @author ?Jia?Yu
14 ? * ? @date ??? 2010 - 11 - 28
15 ? */
16 public?class?DistributionTest?{
17
18 ???? /**
19 ????? * ? @param ?args
20 ????? */
21 ????public?static?void?main(String[]?args)?{
22 ???????? // ?TODO?Auto - generated?method?stub
23 ????????poisson();
24 ???????? System . out . println( " ------------------------------------------ " );
25 ????????normal();
26 ????????test();
27 ????}
28
29 ???? /**
30 ????? * ?test? for ?example
31 ????? * ?《飲料裝填量不足與超量的概率》
32 ????? * ?某飲料公司裝瓶流程嚴謹,每罐飲料裝填量符合平均600毫升,標準差3毫升的常態分配法則。隨機選取一罐,容量超過605毫升的概率?容量小于590毫升的概率
33 ????? * ?容量超過605毫升的概率? = ?p?(?X? > ? 605 ) = ?p?(?((X - μ)? / σ)? > ?(?( 605 ?–? 600 )? / ? 3 )?) = ?p?(?Z? > ? 5 / 3 )? = ?p(?Z? > ? 1.67 )? = ? 0.0475
34 ????? * ?容量小于590毫升的概率? = ?p?(X? < ? 590 )? = ?p?(?((X - μ)? / σ)? < ?(?( 590 ?–? 600 )? / ? 3 )?) = ?p?(?Z? < ? - 10 / 3 )? = ?p(?Z? < ? - 3.33 )? = ? 0.0004
35 ????? */
36 ????private?static?void?test()?{
37 ???????? // ?TODO?Auto - generated?method?stub
38 ????????NormalDistribution?normal? = ?new?NormalDistributionImpl( 600 , 3 );
39 ????????try?{
40 ???????????? System . out . println( " P(X<590)?=? " + normal . cumulativeProbability( 590 ));
41 ???????????? System . out . println( " P(X>605)?=? " + ( 1 - normal . cumulativeProbability( 605 )));
42 ????????}?catch?(MathException?e)?{
43 ???????????? // ?TODO?Auto - generated?catch?block
44 ????????????e . printStackTrace();
45 ????????}
46 ????}
47
48 ????private?static?void?poisson()?{
49 ???????? // ?TODO?Auto - generated?method?stub
50 ????????PoissonDistribution?dist? = ?new?PoissonDistributionImpl( 4.0 );
51 ????????try?{
52 ???????????? System . out . println( " P(X<=2.0)?=? " + dist . cumulativeProbability( 2.0 ));
53 ???????????? System . out . println( " mean?value?is? " + dist . getMean());
54 ???????????? System . out . println( " P(X=1.0)?=? " + dist . probability( 1.0 ));
55 ???????????? System . out . println( " P(X=x)=0.8?where?x?=? " + dist . inverseCumulativeProbability( 0.8 ));
56 ????????}?catch?(MathException?e)?{
57 ???????????? // ?TODO?Auto - generated?catch?block
58 ????????????e . printStackTrace();
59 ????????}
60 ????}
61
62 ????private?static?void?normal()?{
63 ???????? // ?TODO?Auto - generated?method?stub
64 ????????NormalDistribution?normal? = ?new?NormalDistributionImpl( 0 , 1 );
65 ????????try?{
66 ???????????? System . out . println( " P(X<2.0)?=? " + normal . cumulativeProbability( 2.0 ));
67 ???????????? System . out . println( " mean?value?is? " + normal . getMean());
68 ???????????? System . out . println( " standard?deviation?is? " + normal . getStandardDeviation());
69 ???????????? System . out . println( " P(X=1)?=? " + normal . density( 1.0 ));
70 ???????????? System . out . println( " P(X<x)=0.8?where?x?=? " + normal . inverseCumulativeProbability( 0.8 ));
71 ????????}?catch?(MathException?e)?{
72 ???????????? // ?TODO?Auto - generated?catch?block
73 ????????????e . printStackTrace();
74 ????????}
75 ????}
76
77 }
78

?

?

輸出:
P(X<=2.0) = 0.23810330555354414
mean value is 4.0
P(X=1.0) = 0.07326255555493674
P(X=x)=0.8 where x = 5
------------------------------------------
P(X<2.0) = 0.9772498680518208
mean value is 0.0
standard deviation is 1.0
P(X=1) = 0.24197072451914337
P(X<x)=0.8 where x = 0.8416212335731417
P(X<590) = 4.290603331968401E-4
P(X>605) = 0.047790352272814696


泊松分布只需要給定參數
λ 即可,而其期望就是 λ。所以構造方法一般就是 new PoissonDistributionImpl(double mean)這樣的形式了。

正態分布需要知道均值和方差,因此要在構造函數時傳入,另外程序中以一個維基百科上的示例來驗證正態分布的正確性。

相關資料:

概率分布: http://zh.wikipedia.org/zh-cn/%E6%A6%82%E7%8E%87%E5%88%86%E5%B8%83

泊松分布: http://zh.wikipedia.org/zh-cn/%E6%B3%8A%E6%9D%BE%E5%88%86%E5%B8%83

正態分布: http://zh.wikipedia.org/zh-cn/%E6%AD%A3%E6%80%81%E5%88%86%E5%B8%83

Commons math 包: http://commons.apache.org/math/index.html

Commons Math學習筆記——分布


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: av网站免费观看 | 久久久av| 日日插夜夜操 | 色综合中文字幕 | 国产精品天堂 | 久久久久久久久久久久久久av | 国产成人高清视频 | 国产一级免费视频 | 在线一级片 | 亚洲电影一区二区 | 婷婷的久久五月综合先锋影音 | 亚洲第一久久 | 欧美aaaaaaaaa| 欧美一区二区三区四区夜夜大片 | 亚洲精品久久久一区 | 欧美国产精品一区二区 | 91天堂网 | 国产一区二区视频在线播放 | 久久狠狠一本精品综合网 | 国产福利区一区二在线观看 | 精品久久久久久亚洲 | 日日爱视频 | 欧美视频一区 | 操你网站 | 一区二区三区在线 | 日本 | 多女多p多杂交视频在线观看 | 美女久久 | 日本一区视频 | 丁香婷婷久久 | 草久久免费视频 | 久久青青草视频 | 亚洲国产日韩欧美高清片a 高清视频在线播放 | 好吊妞gao988在线播放 | 国产v欧美v日本v精品 | 久久华人| 成人不卡 | 欧美一级一级 | 福利国产 | 视频一区二区久久 | 成人片网址 | 亚洲3p|