0

我真的希望你能帮助我解决我自己无法解决的问题。我正在尝试为 Web 应用程序编写一个基本的骨灰盒模型。我想在具有2种不同颜色的模型中根据不同的绘图方法计算特定随机事件的概率。

瓮的组成(红球和黑球)在向量 a <-c(number_red, number_black) 中指定

随机事件在另一个向量中指定,比如说 b<-c("red","re​​d","black","re​​d") 或任何其他红黑球的组合

现在要计算事件的概率(向量 b),当球 1)被替换在骨灰盒中,并且顺序很重要 2)在骨灰盒中没有被替换,并且顺序很重要 3)在骨灰盒中没有被替换,并且顺序无关紧要 4) 替换在骨灰盒中,顺序无关紧要

我想出了几个不同的想法,但没有一个真正奏效……起初我编写函数是为了确定在每个场景中可以绘制多少种不同的组合。

stan = function(n,x) {return(n^x)}
perm = function(n, x) {return(factorial(n) / factorial(n-x))}
komb = function(n, x) {return(factorial(n) / (factorial(n-x)*factorial(x)))}
komb2 = function(n, x) {return(factorial(n+x-1) / (factorial(n-1)*factorial(x)))}

但是后来我真的不知道如何应用它们来计算最终概率。

我还尝试了 for 循环来模拟树形图,但它对我来说太复杂了。例如:

c <- c(number_red/(number_red+number_black), number_red/(number_red+number_black))
b <- c("red","black","red")
b[b=="red"]<-1
[b=="black"]<-2
b<-as.numeric(b)

vec<-NULL

for (i in b){
vec<-c(vec, c[i])}

prod(vec)

像这样的解决方案为问题 #1 提供了正确的结果,但我真的不知道如何将其应用于其他问题,因为每次运行循环时我都必须找到一种方法来根据向量 b 的组成来改变向量 c .

当然,我尝试过不同的想法,但似乎没有一个真正奏效。如果有人可以帮助我解决我的问题,我将非常感激。

最好的,亨利

4

1 回答 1

0

这个对吗?

a <- c(red = 5, black = 5)
b <- c("red","red","black","red")


# (1)
prod((a/sum(a))[b])

# (2)
p <- c()
n <- a
for(i in b){
    p <- c(n[i] / sum(n), p)
    n[i] <- n[i] - 1
}
prod(p)

# (3)
komb <- function(n, x) {
    return(factorial(n) / (factorial(n-x)*factorial(x)))
}

n <- table(b)

prod(sapply(names(n), function(i){
    komb(a[i], n[i])
})) / komb(sum(a), sum(n))

# (4)
# I think it is the same as (1) as each sample is independent;
于 2016-11-20T17:15:15.300 回答