我生成了 100000 个指数随机变量rexp
,我被要求使用内置的 R 函数从它们生成 100000 个二项式随机变量。
我真的不知道如何从另一个生成一个随机变量。我在互联网上搜索了一些资源,但它们主要是关于从指数生成泊松,这非常相关,因为指数分布可以解释为泊松的时间间隔。通过应用cumsum
指数和使用cut
函数来制作一些包含时间间隔内出现次数的箱,可以很容易地实现泊松。
但我不知道如何从指数生成二项式。
我生成了 100000 个指数随机变量rexp
,我被要求使用内置的 R 函数从它们生成 100000 个二项式随机变量。
我真的不知道如何从另一个生成一个随机变量。我在互联网上搜索了一些资源,但它们主要是关于从指数生成泊松,这非常相关,因为指数分布可以解释为泊松的时间间隔。通过应用cumsum
指数和使用cut
函数来制作一些包含时间间隔内出现次数的箱,可以很容易地实现泊松。
但我不知道如何从指数生成二项式。
下面的函数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