Answers:
这是另一种方法,不涉及递归。但是,它仍然使用总和和乘积,其长度取决于参数。首先,我将给出表达式,然后进行解释。
我们有
编辑:在写完所有这些内容之后,我意识到我们可以通过将二项式系数组合为超几何概率和三项式系数来合并以上表达式。对于它的价值,修改后的表达式为 这里,是一个超几何随机变量,其中抽取是从具有成功状态的大小为的总体中得出的。Hyp(n,j+k,al)alnj+k
为了使组合参数更容易跟踪(希望如此),让我们得到一些注释。在整个过程中,我们认为和固定的。我们将使用表示有序元组的集合,其中每个满足一个1,... ,一米 Ç(我)米(大号1,... ,大号米)大号我 ⊆ 小号
我们还将对相同的集合使用,除了我们需要而不是相等。大号1 ∩⋯∩大号米 ⊇我
一个主要的观察结果是相对容易计数。这是因为对于所有,条件等效于,因此从某种意义上讲,这消除了不同值之间的相互作用。对于每个,满足要求的的数量为,因为我们可以通过选择大小为的的子集来构造这样的然后与合并。它遵循 大号1 ∩⋯∩大号米 ⊇我大号我 ⊇我我我我大号我( |小号| - |我|LiS∖Iai−| 我| 我| C′(I)| =n∏i=1(|S|−|I|
现在我们的原始概率可以通过为: P ( | 大号1 ∩ 大号2 ∩ ⋯ ∩ 大号米 | = ķ ) = Σ 我:| 我| = k | C(I )|
我们可以立即在此处进行两个简化。首先,分母与相同 其次,排列参数表明通过基数仅取决于。由于存在具有基数为的个子集,因此得出 ,其中是具有基数的的任意固定子集| C(I)| 我| 我| (n
退后一步,我们现在将问题简化为显示
令是的不同子集,这些子集是通过将一个元素恰好加到。然后 (这就是说,如果,则包含但不包含任何其他元素。)我们现在已经将计数问题转换为计数问题,我们知道如何处理。更具体地说,我们有
我们可以应用包含-排除来处理上面的并集表达式的大小。这里的关键关系是,对于任何非空, 这是因为如果包含多个,那么它也包含其并集。我们还注意到,集合大小。因此
最后,通过将末尾的表达式代入的等式 在上面并合并总和,我们得到 。
我不知道解析方法可以解决此问题,但是这是一种计算结果的递归方法。
对于您元素中选择元素,其中元素之前已被选择。在第二次绘制中选择与相交的元素的概率由超几何分布给出:
我们可以将结果称为我们可以使用相同的逻辑来找到其中是三个样本的交集的基数。然后,
每个找到它。后面的计算在数值上并不困难,因为只是先前计算的结果,而是对超几何分布。
通常,要找到,可以应用以下递归公式: 对于和 也就是说
在R中:
hypergeom <- function(k, n, K, N) choose(K, k) * choose(N-K, n-k) / choose(N, n)
#recursive function for getting P(b_i) given P(b_{i-1})
PNext <- function(n, PPrev, ai, upperBound) {
l <- seq(0, upperBound, by=1)
newUpperBound <- min(ai, upperBound)
kVals <- seq(0, newUpperBound, by=1)
PConditional <- lapply(kVals, function(k) {
hypergeom(k, ai, l, n)
})
PMarginal <- unlist(lapply(PConditional, function(p) sum(p * PPrev) ))
PMarginal
}
#loop for solving P(b_m)
P <- function(n, A, m) {
P1 <- c(rep(0, A[1]), 1)
if (m==1) {
return(P1)
} else {
upperBound <- A[1]
P <- P1
for (i in 2:m) {
P <- PNext(n, P, A[i], upperBound)
upperBound <- min(A[i], upperBound)
}
return(P)
}
}
#Example
n <- 10
m <- 5
A <- sample(4:8, m, replace=TRUE)
#[1] 6 8 8 8 5
round(P(n, A, m), 4)
#[1] 0.1106 0.3865 0.3716 0.1191 0.0119 0.0003
#These are the probabilities ordered from 0 to 5, which is the minimum of A