有多少随机排列可以覆盖所有可能的排列?

机器算法验证 采样 置换检验 优惠券收集问题
2022-03-25 18:11:33

我有生成随机排列的代码。在我的例子中,一个排列由 N 个二进制特征组成,并且 N 个特征中的每一个都是随机设置或取消设置的。我必须生成多少次随机排列才能合理地确保我已经涵盖了所有可能的排列?我不确定如何定义“合理保证”(50%、95%?)。

例如,假设 N = 10,所以有 1024 种可能的排列,我应该随机生成多少次排列才能有 50% 的把握我已经生成了所有 1024 种排列?

在我看来,这与通过重采样抽取样本时 36.8% 的重复命中率有关,但我不是统计学家。

1个回答

排列通常指的是其他东西,因此最好将您的问题称为“随机二进制词”或类似的东西。

获得每种类型的至少一个代表需要多长时间的问题称为优惠券收集器问题如果你假设所有长度的二进制字N等可能,那么有2N优惠券的种类。您可以将收集所有优惠券的时间写为收集时间的总和i新的优惠券,独立几何随机变量的总和。因此,收集它们所需的预期优惠券数量是2Ni=12N1/i2Nlog2N,或更准确地说2Nlog2N+2Nγ+1/2+o(1). 为了N=10这是关于7689. 方差为22Ni=12N1/i222Nπ26,所以标准差约为2Nπ6. 为了N=10这是关于1313. 请注意,这里不适合使用正态近似值。

一个粗略的界限是切比雪夫不等式,它表示随机变量大于k偏离均值的标准差最多1/k2, 和类似的 Cantelli 不等式是随机变量的概率至少为k高于平均值的标准差最多为1/(k2+1). 这为您提供了大约的上限7689+13139002对于中位数,和7689+13131913412为了95th 百分位数。

如果这些界限不够好,则已知有更精确但更复杂的渐近线。另一种方法,可能适用于N=25,是使用表示作为独立几何分布的总和来以数值方式计算精确分布。