繁体   English   中英

如何证明采样算法?

[英]How to prove a sampling algorithm?

这是一个作业问题。 为了打印范围为[0,N)的M个排序的不同随机整数,我们可以使用以下算法:


int n = N 
int m = M 
for i in [0,N)
    if (bigrandom() % n--) < m) 
        print i
        m--
众所周知,该算法以相等的概率选择范围内的所有整数。 你能帮我证明一下吗?

  1. 选择任何特定数字的机会是m/n
  2. 如果选择此数字,则会遇到相同的问题,但n' = n - 1m' = m - 1 如果不是,我们有同样的问题,但是n' = n - 1m' = m

您的算法就是这种想法的一种实现。

您还需要证明假设1 ,但您可能可以自己做。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM