信号発生間隔のベクトルを与えると検出回数を返す関数を作る。(R言語ver4.10)

calc=\(intervals,dead_time=10){
i=1
detected=1
sum_of_intervals=intervals[i]
while(i<=length(intervals)){
if(sum_of_intervals>dead_time){
detected=detected+1
sum_of_intervals=0
}
i=i+1
sum_of_intervals=sum_of_intervals+intervals[i]
}
detected
}

信号はポアソン過程に従って発生すると仮定する。
1秒間に発生する信号の数はパラメータ10のポアソン分布に従う、その間隔の分布は指数分布に従う。
100秒間に発生する信号の数の平均は1000(間隔の数は999)
999個の指数分布(パラメータは10)に従う乱数を発生させて累積和が100を超過したら削除する。
その乱数を上記calcにいれて検出回数を計算させる。

sim=\(print=FALSE){
intervals=rexp(100*10-1,10)
if(print) BEST::plotPost(intervals,breaks=30)
Intervals=intervals[cumsum(intervals)<=100]
calc(intervals,dead_time = 0.010)
}

これを100万回やってみた。
> summary(re)
Min. 1st Qu. Median Mean 3rd Qu. Max.
880.0 903.0 909.0 908.9 915.0 937.0

シミュレーション解は909回検出という結果が得られた。