I doubt that I understand your function correctly. I have never used VBA so I had to read the documentation on the Gamma_Inv() function. The key information is
If p = GAMMA_DIST(x,...), then GAMMA_INV(p,...) = x.
where Gamma_Dist is the gamma cumulative distribution. So Gamma_Inv() is the same as qgamma() in R .
I wrote two versions of your function. The first mimics the logic of your function. The second avoids the for loop. You do not define Rdn anywhere, so I assigned it outside of the function.
Calculating the cumulative sum of the constant x returned by Gamma_Inv() seems like a strange thing to do and that is why I doubt that I have understood your function.
DM <- function(Alfa, beta, numsin) {
S <- 0
for( i in 1:numsin) {
Y <- qgamma(Rdn, Alfa, rate = beta)
S = S + Y
}
return(S)
}
Rdn <- 0.6
DM(3,2,5)
#> [1] 7.763446
#Second version of the function
DM2 <- function(Alfa, beta, numsin) {
qgamma(Rdn, Alfa, rate = beta) * numsin
}
DM2(3,2,5)
#> [1] 7.763446
Created on 2022-06-22 by the reprex package (v2.0.1)