关于生成二项式随机变量值的代码

Code about generation of values for a binomial random variable

考虑 r 中的以下代码以生成二项式随机变量的值。

Binomial<-function(n,p,ns)
{
  S <- rep(ns)
  for (i in 1:ns)
  {
    k <-0
    produ<-runif(1)
    while (produ >=(1-p)^n)
    {
      produ <- produ*runif(1)
      k <-k+1
    }
    S[i] <- k
  }
  return(S)
}

是否正确?

如果不是,为什么不呢?

如果是,可以通过某种方式改进吗?

有一个函数 rbinom() 做同样的事情。如果你搭建这个功能是为了练习,我给你评语:

  • 您应该考虑可能破坏您的功能的值。例如,我尝试用 p = 1 运行 它,但没有 return 结果。这应该是固定的。

  • 在函数中添加注释以定义参数

    Binomial <- function(n, p, ns){
    # n is ....
    # p is the probably of the event
    # ns is ...