Jika kita mulai dari , jumlah teleskop, memberikan untuk CDF (dimodifikasi). Menghindari ini, dan menangani kasus khusus , memberikan algoritma berikut (dikodekan , saya khawatir, tetapi Anda dapat menganggapnya sebagai kodesemu untuk implementasi Python):k=21−1/kk=1R
rsoliton <- function(n.values, n=2) {
x <- runif(n.values) # Uniform values in [0,1)
i <- ceiling(1/x) # Modified soliton distribution
i[i > n] <- 1 # Convert extreme values to 1
i
}
Sebagai contoh penggunaannya (dan tes), mari kita menggambar nilai untuk :105N=10
n.trials <- 10^5
i <- rsoliton(n.trials, n=10)
freq <- table(i) / n.trials # Tabulate frequencies
plot(freq, type="h", lwd=6)