Boost C++ Libraries Home Libraries People FAQ More

PrevUpHomeNext
伯努利分佈(Bernoulli Distribution)

#include <boost/math/distributions/bernoulli.hpp>

namespace boost{ namespace math{
 template <class RealType = double, 
           class Policy   = policies::policy<> >
 class bernoulli_distribution;
   
 typedef bernoulli_distribution<> bernoulli;

 template <class RealType, class Policy>
 class bernoulli_distribution
 {
 public:
    typedef RealType  value_type;
    typedef Policy    policy_type;

    bernoulli_distribution(RealType p); // Constructor.
    // 訪問函數(Accessor function).
    RealType success_fraction() const
    // 成功概率 (分數).
 }; 
}} // namespaces

伯努利分佈是一個單次試驗只有0(失敗)和1(成功)兩個結果的離散分佈,成功概率為 p。

伯努利分佈是構造其它的獨立的伯努利試驗離散分佈序列的最簡單的基礎材料(building block)。

伯努利分佈是僅有一次試驗的二項分佈(k = 1, p)。

概率密度函數 pdf f(0) = 1 - p, f(1) = p. 累積分佈函數 D(k) = 如果 (k == 0) 1 - p 否則為 1.

下面的圖像顯示了概率密度函數 pdf 在單次試驗中的不同結果:

以及累積分佈函數

成員函數
bernoulli_distribution(RealType p);

使用success_fraction p來構造一個伯努利分佈.。

RealType success_fraction() const

返回分佈的success_fraction參數。

非成員訪問函數

所有分佈通用的的 非成員訪問函數 都得到支持: 累積分佈函數概率密度函數函數點,概率故障函數(Hazard Function)累積危險函數(Cumulative Hazard Function)均值(mean)中位數眾數方差標準差失真(skewness)峰態(kurtosis)峰態超越(kurtosis_excess)值域(range) 以及 支持

隨機變量的定義域是0和1,而支持的值域是0或1。

在這個範圍之外,函數是未定義的,或者可能拋出一個 domain_error 異常且生成一個錯誤消息。

精確度

伯努利分佈使用是簡單的數學運算,因些誤差在1到2個epsilon(10的-5次方)。

實現

在下面的表中,p 是成功概率 而 q = 1-pk 是隨機變量, 值為 0 或者 1。

[Note] 注意

伯努利分佈在這裡實現為一個嚴格的離散分佈。如果需要一個允許k為任何的實數通用的版本,那麼應當使用單次試驗的伯努利分佈,例如:

binomial_distribution(1, 0.25)

函數

實現說明

支持的值域

{0, 1}

pdf

使用關係: pdf = 1 - p 對於 k = 0, 否則為 p

cdf

使用關係: cdf = 1 - p 對於 k = 0, 否則為 1

cdf 補值

q = 1 - p

分位點

如果 x <= (1-p) 為0 否則為 1

補集的分位點

如果 x <= (1-p) 為1 否則為 0

均值

p

方差

p * (1 - p)

眾數(mode)

如果 (p < 0.5) 為0 否則為 1

skewness

(1 - 2 * p) / sqrt(p * q)

峰態(kurtosis)

6 * p * p - 6 * p +1/ p * q

峰態超越(kurtosis excess

kurtosis -3

參考資料

PrevUpHomeNext