我有100000个用rexp
生成的指数随机变量,我被要求使用内置的R函数从中生成100000个二项式随机变量。
我真的不知道如何从另一个随机变量中生成一个。我在互联网上搜索了一些资源,但它们大多是关于从指数生成泊松的,这是非常相关的,因为指数分布可以解释为泊松的时间间隔。通过在指数上应用CCD_ 2并使用CCD_。
但我不知道怎么可能由指数生成二项式。
下面的函数rbin
从指数rv生成二项式rv。原因可能是CrossValidated的问题,而不是关于代码的StackOverflow的问题。
rbin <- function(n, size, p){
onebin <- function(i, size, thres){
I <- 0L
repeat{
S <- sum(rexp(I + 1)/(size + 1 - seq_len(I + 1)))
if(S > thres) break
I <- I + 1L
}
I
}
thres <- -log(1 - p)
sapply(seq_len(n), onebin, size, thres)
}
set.seed(1234)
u <- rbin(100000, 1, 0.5)
v <- rbinom(100000, 1, 0.5)
X <- cbind(u, v)
cbind(Mean = colMeans(X), Var = apply(X, 2, var))
# Mean Var
#u 0.50124 0.2500010
#v 0.49847 0.2500002