7.1 例2.3について (20200511)

実数の繰り上げ,繰り下げに関する議論に誤りがあった. \(\lceil x\rceil\)\(x\)未満ではない最小の整数を表すとする.このとき\(1-(1-p)^x<U\)を満たす最大の整数は, \[ 1-U<(1-p)^x\leadsto\log(1-U)< x\log(1-p)\leadsto \frac{\log(1-U)}{\log(1-p)}>x \] より, \[ x=\left\lceil\frac{\log(1-U)}{\log(1-p)}-1\right\rceil \] とすべきだ.だから,乱数は \[ \left\lceil\frac{\log U}{\log(1-p)}-1\right\rceil \] で生成できる.R言語では

p <- 0.2
n <- 3
ceiling(log(runif(n))/log(1-p)-1)
## [1] 8 1 4

とすべきだった.ただし,教科書にある \[ \left [\frac{\log U}{\log(1-p)}\right] \] と先程の値が異なる確率は\(0\)だから,乱数生成の意味では問題を生じ得ない.