在第126页,第12.2节:
算法按顺序考虑整数0,1,2,...,n-1,然后选择 每一个都通过适当的随机测试。通过按顺序访问整数,我们 保证输出将被排序。
要理解选择标准,让我们考虑m = 2的例子 并且n = 5。我们应该选择第一个整数0,概率为2/5;一个 程序通过像
这样的语句来实现if (bigrand() % 5) < 2
我的问题是,为什么选择第一个整数的概率是2/5而不是1/5?从5个数字中随机选择一个数字的概率不应该是1/5吗?
这里真的很困惑。希望有人可以在这里提供一些澄清。
谢谢!
答案 0 :(得分:1)
从5个数字中随机选择一个数字的概率是不是1/5?
这是设计采样算法的一种方法,但这种方法的工作方式不同。它依次考虑每个元素并决定该元素是否是样本的一部分。这是m = 2和n = 4的决策树(确定性决策被抑制)。
take 0?
_____yes_____ _____no_____
/ \
/ take 1?
take 1? yes/ \no
yes/ \no / \
/ \ take 2? {2,3}
{0,1} take 2? yes/ \no
yes/ \no / \
/ \ {1,2} {1,3}
{0,2} {0,3}
在根处,3/6后代结果包括0,并且0采用概率2/4 = 1/2。如果我们取0,则只有1/3结果包括1.如果我们不取0,那么2/3结果包括1.在每一步,每个决策的概率与相应子树中的结果数成正比,确保大小均匀的随机子集m。
答案 1 :(得分:1)
假设您正在挑选有序对。那么第一个数字是该对中的第一个数字的概率为1/5,并且同样的概率为1/5,即第一个数字将是该对中的第二个数字。 (它永远不会是对中的第一个和第二个数字。)
因此,5个中有2个机会成为有序对中的某个地方。
选择随机无序对与选择有序对然后忘记订单相同。因此,在5个中也有2个机会在无序对中。