抽牌时的预期未见牌数2个2n的牌nn

机器算法验证 可能性 期望值
2022-03-16 07:55:43

我们有一副张牌。我们随机抽取一张牌,随机替换。次抽牌后,预期的牌数是多少?n2n

这个问题是问题 2.12 的第 2 部分

M. Mitzenmacher 和 E. Upfal,概率与计算:随机算法和概率分析,剑桥大学出版社,2005 年。

此外,就其价值而言,这不是家庭作业问题。这是自学,我只是卡住了。

到目前为止,我的回答是:

次抽牌后看到的不同牌的数量。然后:Xii

E[Xi]=k=1nk(knP(Xi1=k)+nk1nP(Xi1=k1))

这里的想法是,每次我们抽牌时,要么抽一张我们见过的牌,要么抽一张没见过的牌,我们可以递归地定义它。

次抽签之后我们还没有看到多少2nnE[X2n]

我相信这是正确的,但必须有一个更简单的解决方案。

任何帮助将不胜感激。

3个回答

提示: 在任何给定的平局中,没有选择一张牌的概率是而且由于我们使用替换进行绘制,我假设我们可以说每次绘制都独立于其他绘制。次抽签中没有选择一张牌的概率是......n1n2n

谢谢迈克的提示。

这就是我想出的。

Xi是一个伯努利随机变量,其中Xi=1如果ith卡从未被抽出。然后pi=P(Xi=1)=(n1n)2n, 但由于pi所有人都一样i, 让p=pi.

现在让X=i=1nXi是之后没有抽到的牌的数量2n画。

然后E[X]=E[i=1nXi]=i=1nE[Xi]=i=1np=np

我认为就是这样。

这是一些验证理论的 R 代码。

evCards <- function(n) 
{
    iter <- 10000;
    cards <- 1:n;
    result <- 0;
    for (i in 1:iter) {
        draws <- sample(cards,2*n,T);
        uniqueDraws <- unique(draws,F);
        noUnique <- length(uniqueDraws);
        noNotSeen <- n - noUnique;
        result <- result + noNotSeen;
    }
    simulAvg <- result/iter;
    theoryAvg <- n * ((n-1)/n)^(2*n);
    output <-list(simulAvg=simulAvg,theoryAvg=theoryAvg);
    return (output);
}