从5中选择2个数字的概率(来自Programming Pearls,2nd Edition)

时间:2012-06-19 02:38:27

标签: algorithm probability

在第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吗?

这里真的很困惑。希望有人可以在这里提供一些澄清。

谢谢!

2 个答案:

答案 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个机会在无序对中。