RANDOM MIN(A[1::n])
min = infinity
for i = 1 to n in random order
if A[i] < min
min = A[i] ---- (*)
return min
第 k 次迭代执行 * 行的概率是多少?
我发现它是 1/n,除了第一次迭代。
原因是随机顺序生成n!可能的结果,在第 k 次迭代中,A[第 k 个生成的结果] 可以是 n 中的任何一个。并且为了使其最小,有 n 种可能性,因此是 1/n。
一个例子:对于 n = 3,k=2
输入:(10, 11, 12) 或 3 个的任意组合
permutations if A[2] < min
123 N
132 N
213 Y
231 N
312 Y//edited mislabeled it earlier
321 Y
行执行的第二次迭代中的概率与所有其他 1/n 相同,除了第一行是 1 因为它总是成立
如果我错了,请告诉我,因为我的教授说是 1/k,我对他的解释不满意!