我正在尝试使用非整数
k
来计算二项式系数,就像 Python 中的 sympy.functions.combinatorial.factorials.binomial
所做的那样。
根据二项式系数的定义,我定义了一个函数:
binomial <- function(n, k) {
return(gamma(n+1)/(gamma(k+1)*gamma(n-k+1)))
}
但是,当n很大时,这不起作用,因为计算时会产生很大的数字。所以,我想问一下有什么功能可以用吗?
谢谢!
lgamma
函数(伽马的对数)正是为这种计算而存在:
binomial <- function(n, k) {
return(gamma(n+1)/(gamma(k+1)*gamma(n-k+1)))
}
binomial(2500, 100)
#NaN
binomial2 <- function(n, k) {
return(exp(lgamma(n+1)-(lgamma(k+1)+lgamma(n-k+1))))
}
binomial2(2500, 100)
#[1] 8.963002e+180