这是一个家庭作业问题。为了在[0,N]范围内打印M个不同的随机整数,我们可以使用以下算法:
int n = N
int m = M
for i in [0,N)
if (bigrandom() % n--) < m)
print i
m--
众所周知,该算法以相同的概率选择范围内的所有整数。你能帮我证明一下吗?
答案 0 :(得分:1)
m/n
。n' = n - 1
和m' = m - 1
会有问题。如果不是,我们会遇到同样的问题,但n' = n - 1
和m' = m
。您的算法就是这个想法的实现。
你还需要证明假设1
,但你可以自己做。