0

我生成了 100000 个指数随机变量rexp,我被要求使用内置的 R 函数从它们生成 100000 个二项式随机变量。

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

但我不知道如何从指数生成二项式。

4

1 回答 1

1

下面的函数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
于 2019-11-11T18:51:52.587 回答