碰到了个题目,题目大概意思如下
题目描述:随机的从大小为n的数组中选取m个整数,要求每个元素被选中的概率相等。
网上给出的大部分答案如下:
分析与解答:首先从有N个元素的数组中随机选出一个元素,然后把这个选中的数字与数组中第一个元素交换,接着从数组后面N-1个数字中选出1个元素与数组中第二个元素交换,以此类推,直到选出m个数字为止,数组前m个数字就是随机选出来的m个数字,且他们被选中的概率相同。
说实话看得迷迷糊糊的,最关键的是不知道为什么这么做,尝试通俗易懂的解答这个问题,记录在此。
其实整个题目可以用上面这个图表示,最后每个值,留在红框内的概率都要是
,因此可以换一种计算方式,计算留在红圈内的概率
留在红圈内的概率=进入红圈的概率 * 不被换出红圈的概率
最关键的就在这,我们需要分别分析这两个的概率,而每一个情况中,需要再拆成小于m的情况,和大于m的情况,也就是说有四种情况,最终结果如下:
进入红圈的概率 |
---|