[英]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--
众所周知,该算法以相等的概率选择范围内的所有整数。
你能帮我证明一下吗?
m/n
。 n' = n - 1
且m' = m - 1
。 如果不是,我们有同样的问题,但是n' = n - 1
且m' = m
。 您的算法就是这种想法的一种实现。
您还需要证明假设1
,但您可能可以自己做。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.