ベルヌーイ分布
0 = 黒、1 = 赤として赤の出る確率
0
,
0
, 期待値
0
, 分散
0
, 平均
0
, 標準誤差
0
| |
0 | 1 |
|---|---|---|
| 確率 |
||
| |
||
| 観測回数 |
定義と性質
結果が {0, 1}、{true, false}、{OK, NG} といった 2 値しかとりえない独立した事象の試みをベルヌーイ試行 (bernoulli trial) と呼ぶ。これらの結果は統計で扱う便宜上
ベルヌーイ試行において確率
この
アルゴリズム
ベルヌーイ試行関数
呼び出しごとに確率 true を返すベルヌーイ試行関数を考える。この場合、一般的なプログラミング言語で用意されている
def trial(p:Double):Boolean = math.random() < p
なお関数に与えられた p が
scala> trial(0.6)
res1: Boolean = false
scala> trial(0.6)
res0: Boolean = true
scala> trial(0.6)
res1: Boolean = true
確率関数
この程度の条件であれば実装上はべき乗を使用するより if で分岐したほうが計算量が少なくコードの可視性も損ねない。
def p(p:Double)(b:Boolean):Double = if(b) p else (1 - p)
上記は Scala のカリー化を使用している。引数 p=0.6 を指定した時点でパラメータ
scala> val p6 = p(0.6) _
p6: Boolean => Double = $$Lambda$1087/1558931350@2aa176de
scala> p6(true)
res0: Double = 0.6
scala> p6(false)
res1: Double = 0.4
scala> p(0.75)(true)
res2: Double = 0.75