【问题标题】:Probability of selecting 2 numbers from 5 (from Programming Pearls, 2nd Edition)从 5 中选择 2 个数字的概率(来自 Programming Pearls,第 2 版)
【发布时间】:2012-06-19 02:38:27
【问题描述】:

在第 126 页,第 12.2 节:

算法依次考虑整数 0、1、2、...、n-1,并选择 每一个都通过适当的随机测试。通过按顺序访问整数,我们 保证输出将被排序。

为了理解选择标准,让我们考虑 m=2 的例子 n = 5。我们应该选择概率为 2/5 的第一个整数 0;一个 程序通过这样的语句实现它

if (bigrand() % 5) < 2

我的问题是,为什么选择第一个整数的概率是 2/5,而不是 1/5?从5个数字中随机选择一个数字的概率不应该是1/5吗?

这里真是一头雾水。希望有人可以在这里提供一些澄清。

谢谢!

【问题讨论】:

  • bigrand() % 5 可以给出 0、1、2、3、4 和 2,其中(0 和 1)小于 2。
  • 算法的目标是什么?以相等的概率从 N 个数字中选择 M 个?

标签: algorithm probability


【解决方案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,并且以 2/4 = 1/2 的概率取 0。如果我们取 0,那么只有 1/3 的结果包含 1。如果我们不取 0,那么 2/3 的结果包含 1。在每一步,每个决策的概率与相应子树中结果的数量成正比,确保大小为 m 的均匀随机子集。

【讨论】:

  • 这张图真的很直观!
【解决方案2】:

假设您正在挑选一个有序的配对。那么第一个数字是该对中的第一个数字的概率为 1/5,同样,第一个数字是该对中的第二个数字的概率为 1/5。 (它永远不会同时是这对中的第一个和第二个数字。)

因此,有 5 次中有 2 次机会出现在有序对中的某个位置。

选择一个随机的无序对与选择一个有序对然后忘记顺序是一样的。因此,它也有 5 次中有 2 次机会成为无序对。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-07
    • 2011-11-05
    • 2016-01-18
    • 1970-01-01
    • 2021-09-18
    • 1970-01-01
    • 2013-03-21
    • 2012-11-13
    相关资源
    最近更新 更多